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

[Algorithms]图的搜索

时间:2019-01-07 01:37:51      阅读:202      评论:0      收藏:0      [点我收藏+]

标签:判断   bool   顶点   nbsp   ret   print   拓扑序   搜索   col   

未完待续


 

知道图的存储,DFS,BFS

 二分图判定

 1 //二分图判定
 2 //给定一个有n个顶点的图,给图上每个顶点染色,要使相邻顶点颜色不同,是否能用最多2种颜色染色?无重边和自环。
 3 //只用两种颜色,确定一个顶点的颜色后,和它相邻的顶点的颜色随之确定的那个。
 4 //选择任意一个顶点出发,依次确定相邻顶点的颜色,判断是否可被2种颜色染色,深度优先搜索
 5 
 6 //输入
 7 vector<int> G[MAX_V];//
 8 int V; //顶点数
 9 int color[MAX_V];//顶点i的颜色(1 or -1)
10 
11 //把顶点染成1或-1
12 bool dfs(int v,int c){
13     color[v] = c;//把顶点v染成颜色c
14     for (int i = 0;i < G[v].size();i++){
15         //如果相邻的顶点同色,则返回false
16         if(color[G[v][i]] == c)
17             return false;
18         if(color[G[v][i]]== 0 && !dfs(G[v][i],-c))
19             return false;
20     }
21     //如果所有顶点都染过色了,则返回true
22     return true;
23 }
24 void solve(){
25     for(int i = 0;i < V;i++){
26         if(color[i] == 0){
27             //如果顶点i还没被染色,则染成1
28             if(!dfs(i,1)){
29                 printf("No\n");
30                 return;
31             }
32         }
33     }
34     printf("Yes\n");
35 }

DFS也可求图的拓扑序。

[Algorithms]图的搜索

标签:判断   bool   顶点   nbsp   ret   print   拓扑序   搜索   col   

原文地址:https://www.cnblogs.com/HuisClos/p/10231070.html

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