zoukankan      html  css  js  c++  java
  • 51nod 1076 2条不相交的路径

    思路:强连通,将他变成有向图,并且不能返回父节点

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 const int maxn=30000;
     4 
     5 struct node{
     6     int v,next;
     7 }edg[50004*3];
     8 int head[maxn],tot=0;
     9 void add(int u,int v){
    10     edg[tot].v=v;edg[tot].next=head[u];head[u]=tot++;
    11 }
    12 int dfn[maxn],low[maxn],belong[maxn];
    13 bool instack[maxn];
    14 int Stack[maxn],index,top,bcnt;
    15 set<int >s[maxn];
    16 void dfs(int u,int fa)
    17 {
    18     dfn[u]=low[u]=++index;
    19     Stack[++top]=u;
    20     instack[u]=true;
    21     for(int i=head[u];i!=-1;i=edg[i].next)
    22     {
    23         int v=edg[i].v;
    24         if(!dfn[v]){
    25             dfs(v,u);
    26             low[u]=min(low[u],low[v]);
    27         }else if(instack[v]&&v!=fa) low[u]=min(low[u],dfn[v]);
    28     }
    29     int v;
    30     if(dfn[u]==low[u]){
    31         bcnt++;
    32         do{
    33             v=Stack[top--];
    34             instack[v]=false;
    35             belong[v]=bcnt;
    36           //  s[bcnt].insert(v);
    37         }while(u!=v);
    38     }
    39 }
    40 int n,m;
    41 void Tarjan()
    42 {
    43     memset(dfn,0,sizeof(dfn));
    44     bcnt = top = index = 0;
    45     for(int i=1;i<=n;i++)
    46         if(!dfn[i])
    47             dfs(i,-1);
    48 }
    49 
    50 int main(){
    51     int x,y;
    52    memset(head,-1,sizeof(head));
    53    scanf("%d%d",&n,&m);
    54    for(int i=1;i<=m;i++){
    55         scanf("%d%d",&x,&y);
    56         add(x,y);add(y,x);
    57    }
    58    Tarjan();
    59    //for(int i=1;i<=n;i++) cout<<belong[i]<<endl;
    60    int q;
    61    scanf("%d",&q);
    62    while(q--){
    63         scanf("%d%d",&x,&y);
    64      //   cout<<belong[x]<<" "<<belong[y]<<" "<<s[belong[x]].size()<<endl;
    65         if(belong[x]==belong[y]){
    66             cout<<"Yes"<<endl;
    67         }
    68         else cout<<"No"<<endl;
    69    }
    70    return 0;
    71 }
  • 相关阅读:
    Eclipse配置方法注释模板
    彻底清除Github上某个文件以及历史
    eclipse快捷键
    Hibernate执行原生SQL
    API接口规范
    eclipse配置google代码风格
    eclipse format xml
    git撤销commit
    使用postman测试文件上传
    centos7下部署elasticSearch集群
  • 原文地址:https://www.cnblogs.com/hhxj/p/7132962.html
Copyright © 2011-2022 走看看