HDU 5424 Rikka with Graph II
【题目链接】:click here~~
代码:
#include <bits/stdc++.h> using namespace std; const int N=1005; vector <int >g[N]; bool vis[N]; int dg[N]; int cnt; int n,u,v; bool ok; void dfs(int u,int cur) { if(cur==n) { ok=true; return ; } if(ok) return ; for(int i=0; i<g[u].size(); ++i) { int v=g[u][i]; if(vis[v]) continue; vis[v]=true; dfs(v,cur+1); vis[v]=false; } } int main() { while(scanf("%d",&n)!=EOF) { memset(vis,0,sizeof(vis)); memset(dg,0,sizeof(dg)); for(int i=1; i<=n; ++i) g[i].clear(); for(int i=1; i<=n; ++i) { scanf("%d%d",&u,&v); g[u].push_back(v); g[v].push_back(u); dg[u]++; dg[v]++; } ok=true; cnt=0; for(int i=1; i<=n; ++i) { if(dg[i]==0) ok=false; else if(dg[i]==1) cnt++; } if(!ok||cnt>2) { puts("NO"); continue; } if(cnt==0) puts("YES"); else { ok=false; for(int i=1; i<=n; ++i) { if(dg[i]==1) { vis[i]=true; dfs(i,1); if(ok) break; } } if(ok) puts("YES"); else puts("NO"); } } return 0; }
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文地址:http://blog.csdn.net/u013050857/article/details/48116301