您的位置:首页 > 其它

UVA-11396 - Claw Decomposition(DFS)

2013-03-29 13:56 316 查看
一道DFS题..

不说了,说多了全是泪..

// File Name: 11396.cpp
// Author: Zlbing
// Created Time: 2013/3/29 12:13:47

#include<iostream>
#include<string>
#include<algorithm>
#include<cstdlib>
#include<cstdio>
#include<set>
#include<map>
#include<vector>
#include<cstring>
#include<stack>
#include<cmath>
#include<queue>
using namespace std;
#define CL(x,v); memset(x,v,sizeof(x));
#define INF 0x3f3f3f3f
#define LL long long
#define REP(i,r,n) for(int i=r;i<=n;i++)
#define RREP(i,n,r) for(int i=n;i>=r;i--)
const int MAXN=305;
vector<int> G[MAXN];
int vis[MAXN];
int n;
bool dfs(int u,int flag)
{
if(vis[u]>=0)
{
if(vis[u]==flag)
return true;
else return false;
}
vis[u]=flag;
if(dfs(G[u][0],flag^1)&&dfs(G[u][1],flag^1)&&dfs(G[u][2],flag^1))
return true;
else return false;
}
int main()
{
while(~scanf("%d",&n))
{
if(n==0)break;
REP(i,1,n)G[i].clear();
int a,b;
while(true)
{
scanf("%d%d",&a,&b);
if(a==0&&b==0)break;
G[a].push_back(b);
G[b].push_back(a);
}
if(n&1)
{
puts("NO");
continue;
}
CL(vis,-1);
if(dfs(1,1))
puts("YES");
else puts("NO");
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: