zoukankan      html  css  js  c++  java
  • hdu 4751(dfs染色)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4751

    思路:构建新图,对于那些两点连双向边的,忽略,然后其余的都连双向边,于是在新图中,连边的点是能不在同一个图中的,于是我们可以用dfs染色的方法来判断是否存矛盾。

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #include<algorithm>
     5 #include<vector>
     6 using namespace std;
     7 
     8 int map[111][111];
     9 int color[111];
    10 int n;
    11 vector<vector<int> >g;
    12 
    13 bool dfs(int u,int father,int state)
    14 {
    15     color[u]=state;
    16     for(int i=0;i<g[u].size();i++){
    17         int v=g[u][i];
    18         if(v==father)continue;
    19         if(color[v]&&color[u]==color[v]){
    20             return false;
    21         }else if(!color[v]&&!dfs(v,u,3-state)){
    22             return false;
    23         }
    24     }
    25     return true;
    26 }
    27 
    28 
    29 int main()
    30 {
    31     int x;
    32     while(~scanf("%d",&n)){
    33         memset(map,0,sizeof(map));
    34         memset(color,0,sizeof(color));
    35         for(int i=1;i<=n;i++){
    36             while(true){
    37                 scanf("%d",&x);
    38                 if(x==0)break;
    39                 map[i][x]=1;
    40             }
    41         }
    42         g.clear();
    43         g.resize(n+2);
    44         for(int i=1;i<=n;i++){
    45             for(int j=i+1;j<=n;j++){
    46                 if(map[i][j]&&map[j][i])continue;
    47                 g[i].push_back(j);
    48                 g[j].push_back(i);
    49             }
    50         }
    51         int flag=1;
    52         for(int i=1;i<=n;i++){
    53             if(g[i].size()>0&&!color[i]){
    54                 if(!dfs(i,i,1)){
    55                     flag=0;
    56                     break;
    57                 }
    58             }
    59         }
    60         flag?puts("YES"):puts("NO");
    61     }
    62     return 0;
    63 }
    View Code
  • 相关阅读:
    团队总结-文艺复兴
    文艺复兴-冲刺总结
    文艺复习-测试博客
    文艺复习-冲刺集合
    冲刺第一天
    凡事预则立
    2020软件工程作业05
    2020软件工程作业04
    前端怎么去学
    十、Kernel_3.0.35版本和Kernel_4.1.15版本在SPI驱动实现机制的差异
  • 原文地址:https://www.cnblogs.com/wally/p/3333201.html
Copyright © 2011-2022 走看看