uva 10004 - Bicoloring
2012-02-03 13:28
316 查看
这题还真太简单了……不过我的方法效率有点低。改天要去看看大牛怎么做。
bfs:#include<stdio.h> #include<string.h> #include<stdlib.h> const int maxn=210; bool G[maxn][maxn],vis[maxn],color[maxn]; int n; int q[maxn*maxn]; bool bfs() { int front=0,rear=0; q[rear++]=0; color[0]=true; vis[0]=true; while(front<rear) { int u=q[front++]; for(int i=0;i<n;i++) if(G[u][i]) { if(!vis[i]) { q[rear++]=i; vis[i]=true; color[i]=!color[u]; } else if(color[i]==color[u]) return false; } } return true; } int main() { #ifndef ONLINE_JUDGE freopen("10004.txt","r",stdin); #endif while(scanf("%d",&n)==1 && n) { memset(G,0,sizeof(G)); memset(vis,0,sizeof(vis)); int I; scanf("%d",&I); int i,j,k; for(i=0;i<I;i++) { scanf("%d%d",&j,&k); G[j][k]=G[k][j]=true; } if(bfs()) printf("BICOLORABLE.\n"); else printf("NOT BICOLORABLE.\n"); } return 0; }
dfs:
#include<stdio.h> #include<string.h> #include<stdlib.h> const int maxn=210; bool G[maxn][maxn],vis[maxn],color[maxn]; int n; int q[maxn*maxn]; bool dfs(int u) { for(int i=0;i<n;i++) if(G[u][i]) { if(!vis[i]) { vis[i]=true; color[i]=!color[u]; return dfs(i); } else if(color[i]==color[u]) return false; } return true; } int main() { #ifndef ONLINE_JUDGE freopen("10004.txt","r",stdin); #endif while(scanf("%d",&n)==1 && n) { memset(G,0,sizeof(G)); memset(vis,0,sizeof(vis)); int I; scanf("%d",&I); int i,j,k; for(i=0;i<I;i++) { scanf("%d%d",&j,&k); G[j][k]=G[k][j]=true; } color[0]=false; if(dfs(0)) printf("BICOLORABLE.\n"); else printf("NOT BICOLORABLE.\n"); } return 0; }
相关文章推荐
- uva 10004 Bicoloring(dfs二分染色,和hdu 4751代码差不多)
- uva10004 Bicoloring(交叉染色法)
- Uva 10004 - Bicoloring
- uva 10004 - Bicoloring
- UVa 10004 - Bicoloring
- UVA 10004 Bicoloring
- UVA - 10004 Bicoloring (dfs和bfs两种解法)
- uva10004 Bicoloring 黑白染色问题,DFS
- uva10004 Bicoloring 二分图染色
- uva 10004 - Bicoloring
- uva 10004 Bicoloring(二染色)
- UVA 10004 Bicoloring
- UVA 10004 Bicoloring
- UVA 10004 - Bicoloring(DFS)
- uva10004 Bicoloring 黑白染色问题,DFS
- UVA 10004 Bicoloring
- UVA - 10004 Bicoloring(判断二分图——交叉染色法 / 带权并查集)
- UVA - 10004 Bicoloring
- UVa 10004 Bicoloring
- UVa 10004 Bicoloring (DFS&二分图)