zoukankan      html  css  js  c++  java
  • hdu 4751

    一道很简单的题,不过在比赛的时候没有写出来;

    刚刚看到这个题,我以为是一个图论题,后来发现其实就是一个暴力的题;

    用bfs,因为一个人与他不认识的人肯定不会在一个集合,如果判断出现冲突则分配失败,否则就成功;

    代码:

     1 #include<cstdio>
     2 #include<cstring>
     3 #include<queue>
     4 #define maxn 103
     5 using namespace std;
     6 
     7 int map[maxn][maxn],n;
     8 int b[maxn];
     9 
    10 bool bfs(int a)
    11 {
    12     queue<int>q;
    13     q.push(a);
    14     while(!q.empty())
    15     {
    16         int u=q.front();
    17         q.pop();
    18         for(int i=1; i<=n; i++)
    19         {
    20             if(i==u||(map[u][i]&&map[i][u]))continue;
    21             if(b[i]==-1)
    22             {
    23                 b[i]=b[u]^1;
    24                 q.push(i);
    25             }
    26             else if(b[i]==b[u]) return 1;
    27         }
    28     }
    29     return 0;
    30 }
    31 int main()
    32 {
    33     int a;
    34     while(scanf("%d",&n)!=EOF)
    35     {
    36         memset(map,0,sizeof map);
    37         for(int i=1; i<=n; i++)
    38         {
    39             while(scanf("%d",&a)&&a)
    40                 map[i][a]=1;
    41         }
    42         memset(b,-1,sizeof b);
    43         int i;
    44         for(i=1; i<=n; i++)
    45         {
    46             if(b[i]==-1)
    47             {
    48                 b[i]=0;
    49                 if(bfs(i)) break;
    50             }
    51         }
    52         if(i==n)puts("YES");
    53         else puts("NO");
    54     }
    55     return 0;
    56 }
    View Code
  • 相关阅读:
    LINQ篇:查询句法
    DLINQ(五):存储过程
    DLINQ(六):探究特性
    DLINQ
    LinQ 扩展函数的应用
    Linq 入门系列 select篇
    Linq 入门系列 [Take,Skip,TakeWhile,SkipWhile]篇
    javascript导航动画效果
    javascript简单的计算器实现
    javascript简单的日历实现
  • 原文地址:https://www.cnblogs.com/yours1103/p/3334639.html
Copyright © 2011-2022 走看看