hdu 4751——Divide Groups

来源:互联网 发布:淘宝图片保护盾 编辑:程序博客网 时间:2024/05/21 09:10

http://www.cppblog.com/linyangfei/archive/2008/08/08/58295.html很详细了。

#include<iostream>#include<cstdio>#include<cstring>using namespace std;int n;int map[110][110];int cmap[110][110];int col[110];int flag;void dfs(int u,int c){if(flag==0)return ;col[u]=c;for(int i=1;i<=n;i++){if(cmap[u][i]&&i!=u){if(col[i]==-1){dfs(i,(c+1)%2);if(flag==0)return ;}if(col[i]==col[u]){flag=0;return;}}}}int main(){int x;while(~scanf("%d",&n)){memset(map,0,sizeof(map));memset(cmap,0,sizeof(cmap));memset(col,-1,sizeof(col));for(int i=1;i<=n;i++){while(scanf("%d",&x)&&x){map[i][x]=1;}}for(int i=1;i<=n;i++)for(int j=i+1;j<=n;j++)if(map[i][j]==0||map[j][i]==0)cmap[i][j]=cmap[j][i]=1;flag=1;for(int i=1;i<=n&&flag;i++)if(col[i]==-1)dfs(i,0);printf(flag?"YES\n":"NO\n");}return 0;}


原创粉丝点击