Uva11396 Claw Decomposition(爪分解)

来源:互联网 发布:人机围棋软件 编辑:程序博客网 时间:2024/04/29 03:08

uva11396 爪分解
【问题描述】
给出n(n≤300)个节点的简单无向图(无自环无重边),每个点的度为3。现在你需要判断能否将它分解成若干个爪(如图所示)。在你的方案中,每条边必须恰好属于一个爪,但同一个节点可以出现在多个爪里。
        
 爪示意图

【输入格式】

  多组输入数据:
  每组数据第一行为这个图的点数n,第二行开始每行2个整数a, b(1 <= a, b <= n)为该图的边,以”0 0”结束。

【输出格式】

  对于每组数据,如果能分解则输出”YES”否则输出”NO”

【输入样例】

4
1 2
1 3
1 4
2 3
2 4
3 4
0 0
6
1 2
1 3
1 6
2 3
2 5
3 4
4 5
4 6
5 6
0 0

【输出样例】

NO
NO

【数据范围】

n≤300

【来源】

《大白书》373页 , Uva11396

分析:此题是一道经典的二分图题目,从题目中可以很轻易地知道爪的中间结点和爪的边缘节点属于两种类型,爪的边缘节点永远只能是边缘节点,否则爪的便就不能仅属于一个爪。故可凭此进行二分。
代码如下:

#include<cstdio>#include<queue>#include<vector>#include<cstring>#define maxn 10005using namespace std;int T,m,n,color[maxn]={0};vector<int>g[maxn];bool BFS(int s){     queue<int>q;     q.push(s);     color[s]=1;   //white     while(!q.empty()){           int i=q.front();q.pop();           int sz=g[i].size();           for(int k=0;k<sz;k++){               int j=g[i][k];               if(color[i]==color[j])return false;               if(color[j]==0){                  q.push(j);                  color[j]=3-color[i];               }           }     }     return true;}void work(){         while(scanf("%d",&n)==1){               int x,y;               for(int i=1;i<=n;i++)g[i].clear();               scanf("%d%d",&x,&y);                while(x!=0&&y!=0){                     g[x].push_back(y);                     g[y].push_back(x);                     scanf("%d%d",&x,&y);               }               bool ok=true;               memset(color,0,sizeof(color));               for(int t=1;t<=n;t++){                   if(color[t]==0){                      ok=BFS(t);                      if(!ok)break;                   }               }               if(ok)printf("YES\n");               else printf("NO\n");         }       }int main(){    work();    return 0;}
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 微商别人觉得贵怎么办 id被别人锁定了怎么办 2017闯红灯扣6分怎么办 乐天玛特超市卡怎么办 乐天玛特的卡怎么办 乐天玛特倒闭 卡怎么办 公租房五年到期怎么办 超市的水杯坏了怎么办 玩天涯明月刀卡怎么办? 想开童装店没什么经验怎么办 孕后期鼻炎犯了怎么办 酷狗国外听不了怎么办 酷狗音乐换手机怎么办 有优势卵泡不排卵怎么办 卵泡30mm不破怎么办 成熟的卵泡不破怎么办 卵泡大了不破怎么办 卵泡突然不长了怎么办 想怀孕卵泡不长怎么办 吉吉影音下载慢怎么办 辞职后社保断了怎么办 2岁泡泡糖咽下去怎么办 我在拼多多开团怎么办 养了一条鱼死了怎么办 鱼缸的鱼尾巴烂怎么办 捡到玉佛吊坠该怎么办 晚上睡不踏实多梦易醒怎么办 红米3s蓝屏怎么办 吃饭没给钱跑了怎么办 刚出生的宝宝红屁屁怎么办 刚出生的宝宝红屁股怎么办 眼镜配高了25度怎么办 广州摇号中签后怎么办 深圳摇号中签后怎么办 皮肤被紫外线晒伤怎么办 脸被太阳晒过敏怎么办 星际2买了的怎么办 脸被风吹红了怎么办 天谕背包满了怎么办 剑灵没用的武器怎么办 人老实心太善良怎么办