193 - Graph Coloring(*****)推荐入门
2012-02-17 22:09
344 查看
/* 推荐题型:五星 题意:对图中节点进行染色,只有黑白可选,要求相邻节点不同色,问黑色最多可有多少个 思路:深度搜索、记忆数组 */ #include <cstdio> #include <cstring> const int nMax=107; int G[nMax][nMax]; int ans[nMax],res,n; //answer,result void dfs(int cur,int *A) { int color[nMax]; if(cur==n) { int num=0; for(int i=1;i<=n;i++) if(A[i]) num++; if(num>res) { res=num; memcpy(ans,A,sizeof(ans)); //不可对数组参数求字节长,WA原因:memcpy(ans,A,sizeof(ans)); } return; } for(int i=1;i<=n;i++) if(A[i]<0) { memcpy(color,A,sizeof(color)); color[i]=1; int u=1; for(int j=1;j<=n;j++) if(G[i][j] && color[j]<0) { color[j]=0; u++; } dfs(cur+u,color); } } int main() { //freopen("data.in","r",stdin); int A[nMax]; int m,k; scanf("%d",&m); while(m--) { scanf("%d %d",&n,&k); memset(G,0,sizeof(G)); for(int i=0;i<k;i++) { int a,b; scanf("%d %d",&a,&b); G[a][b]=G[b][a]=1; } res=0; memset(A,-1,sizeof(A)); dfs(0,A); printf("%d\n",res); int first=true; for(int i=1;i<=n;i++) if(ans[i]) { if(!first) printf(" "); else first=false; printf("%d",i); } printf("\n"); } return 0; }
/* 该解法思路:二叉树式深度搜索,最优化剪枝 */ #include <cstdio> #include <cstring> const int nMax=107; int G[nMax][nMax],A[nMax]; int ans[nMax],res,n; bool check(int dep) { for(int i=1;i<=n;i++) if(G[dep][i] && A[i]==1) return false; return true; } void dfs(int dep,int now) { if(dep>n) { if(now>res) { res=now; memcpy(ans,A,sizeof(A)); } return; } if(now+n-dep+1<=res) return;//剪枝 if(check(dep)) { A[dep]=1; dfs(dep+1,now+1); A[dep]=-1;//回溯 } A[dep]=0; dfs(dep+1,now); A[dep]=-1; } int main() { //freopen("data.in","r",stdin); int t,k; scanf("%d",&t); while(t--) { scanf("%d %d",&n,&k); memset(G,0,sizeof(G)); for(int i=0;i<k;i++) { int a,b; scanf("%d %d",&a,&b); G[a][b]=G[b][a]=1; } memset(A,-1,sizeof(A)); res=0; dfs(1,0); printf("%d\n",res); bool first=true; for(int i=1;i<=n;i++) if(ans[i]) { if(!first) printf(" "); else first=false; printf("%d",i); } printf("\n"); } return 0; }
相关文章推荐
- Uva 193 - Graph Coloring
- uva - 193 Graph Coloring(回溯)
- UVa 193 - Graph Coloring
- uva 193 Graph Coloring
- uva 193 Graph Coloring( 图染色 ) DFS+回溯
- uva 193 Graph Coloring
- uva 193 - Graph Coloring
- uva 193 Graph Coloring(回溯)
- UVa 193 & POJ 1419 - Graph Coloring
- uva193 - Graph Coloring
- UVA 193 - Graph Coloring
- UVA 193 Graph Coloring 图染色 DFS 数据
- UVA 193 Graph Coloring
- UVa 193 - Graph Coloring
- UVA 193 Graph Coloring
- UVA 193 Graph Coloring
- UVA - 193 Graph Coloring
- UVA 193 - Graph Coloring
- UVA - 193 Graph Coloring(回溯)
- uva193 - Graph Coloring