zoukankan      html  css  js  c++  java
  • [Algorithms]图的搜索

    未完待续


    知道图的存储,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
    ");
    30                 return;
    31             }
    32         }
    33     }
    34     printf("Yes
    ");
    35 }

    DFS也可求图的拓扑序。

  • 相关阅读:
    MAC使用小技巧(一)
    开发者:网站 & SDK
    编译 & 预处理
    归并排序 & 快速排序
    算法 & 分析 (收集)
    栈 & 堆 |--> 内存管理
    [ 单例、代理 & 通知 ]
    博客园:CSS & HTML
    比较、字符串
    Swift # 异常处理
  • 原文地址:https://www.cnblogs.com/HuisClos/p/10231070.html
Copyright © 2011-2022 走看看