URAL 1080 Map Colouring [简单DFS]
2011-09-21 11:06
387 查看
题意:给定一个地图,有若干国家,有两种颜色,要求相邻国家的着色不同,确定方案。
思路:按要求第一个国家为X=0,则其相邻国家为1-X,若与先前矛盾则输出-1,注意相邻判断结束,将其边断开,以免干扰下次搜索。
思路:按要求第一个国家为X=0,则其相邻国家为1-X,若与先前矛盾则输出-1,注意相邻判断结束,将其边断开,以免干扰下次搜索。
#include <string.h> #include <iostream> using namespace std; #define MAX 100 int map[MAX][MAX]; int color[MAX]; bool f; int n; void dfs(int x,int c){ if(f) return; if(color[x]!=2){ if(color[x]==c) return; else{ f=true; return; } } color[x]=c; for(int i=0;i<n;i++){ if(map[i][x]){ map[i][x]=map[x][i]=0; dfs(i,1-c); } } } int main(){ while(cin>>n){ memset(map,0,sizeof(map)); f=false; for(int i=0;i<n;i++){ color[i]=2; int t; while(cin>>t&&t) map[t-1][i]=map[i][t-1]=1; } for(int i=0;i<n;i++) if(color[i]==2) dfs(i,0); if(!f){ for(int i=0;i<n;i++) cout<<color[i]; cout<<endl; } else cout<<"-1"<<endl; } return 0; } /*测试: Sample Input 3 2 0 3 0 0 Sample Output 010 */
相关文章推荐
- ural 1080 Map Coloring DFS染色
- POJ 3051 Satellite Photographs 简单DFS
- HDU 1728逃离迷宫(简单dfs)
- PKU3051 Satellite Photographs 简单DFS
- ural 1005 dp dfs or 0 1背包
- 杭电 HDU 1312 Red and Black(超级简单dfs)
- URAL 1033 Labyrinth(DFS)
- poj 3411 Paid Roads 简单的dfs
- 蓝桥杯 未名湖边的烦恼 (简单暴力dfs)
- 初学DFS搜索,N皇后问题,简单易懂
- DFS深度优先搜索简单案例:Coin解决方案
- Codeforces Round #267 (Div. 2)D(DFS+单词hash+简单DP)
- 【博弈 && dfs】URAL 2104 Game with a Strip
- poj 1321 — 棋盘问题(简单DFS)
- 简单图论 ural 1779. The Great Team
- hdu1016-Prime Ring Problem(简单dfs)
- poj 3984 迷宫问题【BFS && DFS】【简单】
- POJ 3620 Avoid The Lakes(简单DFS求连通分量)
- 解救人质 DFS简单模板
- poj2488 A Knight's Journey 简单DFS 注意搜索步骤