zoukankan      html  css  js  c++  java
  • 发现环

    深度优先搜索算法,注意删除前导路径,就可以AC了

    #include <stdio.h>
    #include <memory.h>
    #include <math.h>
    #include <string>
    #include <string.h>
    #include <vector>
    #include <set>
    #include <stack>
    #include <queue>
    #include <algorithm>
    #include <map>
    
    
    #define I scanf
    #define OL puts
    #define O printf
    #define F(a,b,c) for(a=b;a<c;a++)
    #define FF(a,b) for(a=0;a<b;a++)
    #define FG(a,b) for(a=b-1;a>=0;a--)
    #define LEN 100010
    #define MAX 0x06FFFFFF
    #define V vector<int>
    
    using namespace std;
    
    vector<int> g[LEN]; 
    vector<int> path;
    vector<int> ans;
    int vis[LEN];
    
    void dfs(int p,int s){
        if(ans.size()>0) return;
        if(vis[s]){
            ans=path;
            //删除前导路径
            vector<int>::iterator it=ans.begin();
            while(it!=ans.end()){
                if(*it==s) break;
                else{
                    it=ans.erase(it);
                }
            } 
            return;
        }
        path.push_back(s);
        vis[s]=1;
        int n=g[s].size();
        for(int i=0;i<n;i++) if(g[s][i]!=p){
            dfs(s,g[s][i]);
        }
        path.pop_back();
        vis[s]=0;
    }
    
    int main(){
    //    freopen("D:/CbWorkspace/blue_bridge/发现环.txt","r",stdin);
        int N,i,a,b,j;
        I("%d",&N);
        for(i=1;i<=N;i++){
            I("%d%d",&a,&b);
            g[a].push_back(b);
            g[b].push_back(a);
        }
        for(i=1;i<=N;i++){
            dfs(-1,i);
            if(ans.size()>0){
                sort(ans.begin(),ans.end());
                int sz=ans.size();
                for(j=0;j<sz;j++){
                    printf("%d",ans[j]);
                    if(j!=sz-1) printf(" ");
                }
                return 0;
            } 
        }
        return 0;
    }
  • 相关阅读:
    【Eclipse导入外部包解决方案】由GoogleMap导入gms包问题引出
    新生活即将开始

    继续我的C旅程
    圣诞后
    新年
    来来回回;不知所云
    吵啊吵啊吵啊
    去海边
    休假结束
  • 原文地址:https://www.cnblogs.com/TQCAI/p/8458618.html
Copyright © 2011-2022 走看看