题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4751

思路:构建新图,对于那些两点连双向边的,忽略,然后其余的都连双向边,于是在新图中,连边的点是能不在同一个图中的,于是我们可以用dfs染色的方法来判断是否存矛盾。

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<algorithm>
 5 #include<vector>
 6 using namespace std;
 7
 8 int map[111][111];
 9 int color[111];
10 int n;
11 vector<vector<int> >g;
12
13 bool dfs(int u,int father,int state)
14 {
15     color[u]=state;
16     for(int i=0;i<g[u].size();i++){
17         int v=g[u][i];
18         if(v==father)continue;
19         if(color[v]&&color[u]==color[v]){
20             return false;
21         }else if(!color[v]&&!dfs(v,u,3-state)){
22             return false;
23         }
24     }
25     return true;
26 }
27
28
29 int main()
30 {
31     int x;
32     while(~scanf("%d",&n)){
33         memset(map,0,sizeof(map));
34         memset(color,0,sizeof(color));
35         for(int i=1;i<=n;i++){
36             while(true){
37                 scanf("%d",&x);
38                 if(x==0)break;
39                 map[i][x]=1;
40             }
41         }
42         g.clear();
43         g.resize(n+2);
44         for(int i=1;i<=n;i++){
45             for(int j=i+1;j<=n;j++){
46                 if(map[i][j]&&map[j][i])continue;
47                 g[i].push_back(j);
48                 g[j].push_back(i);
49             }
50         }
51         int flag=1;
52         for(int i=1;i<=n;i++){
53             if(g[i].size()>0&&!color[i]){
54                 if(!dfs(i,i,1)){
55                     flag=0;
56                     break;
57                 }
58             }
59         }
60         flag?puts("YES"):puts("NO");
61     }
62     return 0;
63 }

View Code

hdu 4751(dfs染色)相关推荐

  1. AT2362 [AGC012B] Splatter Painting(思维、dfs染色、剪枝)

    AT2362 [AGC012B] Splatter Painting 题意 给一个n个点m条边的无向图,有q次操作 第i次操作,给出v,d,c,把所有到点v的距离不超过d的点都染上颜色c 问最后每个点 ...

  2. Codeforces Codeforces Round #383 (Div. 2) E (DFS染色)

    题目链接:http://codeforces.com/contest/742/problem/E 题意: 有一个环形的桌子,一共有n对情侣,2n个人,一共有两种菜. 现在让你输出一种方案,满足以下要求 ...

  3. P1457 城堡 The Castle(DFS+染色)

    题目描述 我们憨厚的USACO主人公农夫约翰(Farmer John)以无法想象的运气,在他生日那天收到了一份特别的礼物:一张"幸运爱尔兰"(一种彩票).结果这张彩票让他获得了这次 ...

  4. CodeForces - 780C Andryusha and Colored Balloons(dfs染色)

    Andryusha goes through a park each day. The squares and paths between them look boring to Andryusha, ...

  5. hdu 3560(dfs判环)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3560 思路:dfs判环,这里成环的条件是环中的每个点的出度和入度都为1,因此dfs的时候只须判断的相连 ...

  6. HDU 2212 DFS (伪·DFS)

    链接 : http://acm.hdu.edu.cn/showproblem.php?pid=2212 本来是想练下DFS的,结果被题目标题坑了(HDU也搞标题党?),更坑的是题还这么水 直接输出四个 ...

  7. hdu 1175 DFS连连看

    题意:中文题就不说了. 思路:DFS,关键是那个转折大于两次就不行的情况怎么深搜,可以枚举递归起始点的四个方向,如果在DFS中的方向K和递归中的不一样而且还满足深搜条件,那么转折次数就加一. 这道题W ...

  8. poj 1564 Sum It Up | zoj 1711 | hdu 1548 (dfs + 剪枝 or 判重)

    Sum It Up Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other) Total Sub ...

  9. hdu 5188 dfs+二分

    get了很多新技能 当时想到了用dfs,但是排序用的是限制时间排序,一直没搞出来. 正解: 二分用时,dfs判断,为了顺利进行做题,需要按照做题开始时间排序 还可以用dp 题意: 作为史上最强的刷子之 ...

最新文章

  1. Oracle RESETLOGS 和 NORESETLOGS 区别说明
  2. VB.NET实现DirectPlay(3)Find HOSTs
  3. Java之多线程里面的锁理解以及synchronized与Lock的区别
  4. 熊猫直播 使用什么sdk_没什么可花的-但是16项基本操作才能让您开始使用熊猫
  5. Hibernate的数据删除,更改
  6. Java 连接LDAP实现验证与查询用户
  7. DB2开发系列之一——基本语法
  8. 6-2 函数式编程例一
  9. 计算机软件自学基础,计算机软件基础一高等教育自学考试试题与答案
  10. Unity3D基础25:AudioSource声音组件
  11. Asp.net自定义控件开发任我行(7)-注册自定义事件
  12. linux工具消失了,输入法工具栏为什么不见了?
  13. C# vb .net实现相机视图效果滤镜
  14. 哈夫曼树的构造与哈夫曼编码
  15. go vender 的环境搭建和使用
  16. dojo学习日记(6)——dojo/_base/fx的 fadeOut()方法
  17. 设计模式之 State(状态模式)通俗理解
  18. c# iot .net 树莓派读取土壤湿度感应器 代码实例
  19. java文件太大 上传不了怎么办_上传文件(200M)过大失败,想提高成800M
  20. 这几个步骤教你如何音频翻译成文字

热门文章

  1. 安装Live communication server 2005存档服务
  2. WinDbg用法详解
  3. C#应用NPOI实现导出EXcel表格中插入饼状图(可实现动态数据生成)
  4. 关于Facebook iOS UI 工具ComponentKit简介
  5. 读阿里机器学习平台的一些总结
  6. weblogic集群安装心得-程序包发布
  7. Kinect For Windows V2开发日志一:开发环境的配置
  8. 月薪3万的程序员都避开了哪些坑
  9. android onTouch()与onTouchEvent()的区别
  10. 1022.在线视频—IT售前营销讲座(三)售前情报、策划和资源协调