码迷,mamicode.com
首页 > 其他好文 > 详细

BestCoder Round #53

时间:2015-08-31 01:14:10      阅读:274      评论:0      收藏:0      [点我收藏+]

标签:bestcoder   图论   

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;
}


版权声明:本文为博主原创文章,未经博主允许不得转载。

BestCoder Round #53

标签:bestcoder   图论   

原文地址:http://blog.csdn.net/u013050857/article/details/48116301

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!