RaFiN_

cut node

Mar 16th, 2019
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.42 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3.  
  4. #define mx 100005
  5.  
  6. int ans,vis[mx],low[mx],d[mx],par[mx],pkkkkk,arr[mx];vector<int>v[mx];
  7.  
  8. void dfs(int s,int flag)
  9. {
  10.     pkkkkk=pkkkkk+1;
  11.     int child=0;
  12.     d[s]=low[s]=pkkkkk;
  13.     vis[s]=1;
  14.     for(int i=0;i<v[s].size();i++)
  15.     {
  16.         int u=v[s][i];
  17.         if(u==par[s])continue;
  18.         if(vis[u]==1)
  19.         {
  20.             low[s]=min(low[s],d[u]);
  21.         }
  22.         else
  23.         {
  24.             par[u]=s;
  25.             dfs(u,0);
  26.             low[s]=min(low[u],low[s]);
  27.             if(low[u]>=d[s]&&flag==0)
  28.             {
  29.                 arr[s]=1;
  30.             }
  31.             child=child+1;
  32.         }
  33.     }
  34.     if(child>1&&flag==1)
  35.     {
  36.             arr[s]=1;
  37.     }
  38. }
  39.  
  40.  
  41. int main()
  42. {
  43.  
  44.     int t;
  45.     scanf("%d",&t);
  46.     for(int q=0;q<t;q++)
  47.     {
  48.         int n,m;pkkkkk=0;
  49.         scanf("%d%d",&n,&m);
  50.         ans=0;
  51.         for(int i=1;i<=n;i++)
  52.         {
  53.             vis[i]=0;
  54.             v[i].clear();
  55.             arr[i]=0;
  56.         }
  57.         for(int i=0;i<m;i++)
  58.         {
  59.             int a,b;
  60.             scanf("%d%d",&a,&b);
  61.             v[a].push_back(b);
  62.             v[b].push_back(a);
  63.         }
  64.  
  65.         for(int i=1;i<=n;i++)
  66.         {
  67.             if(!vis[i])dfs(i,1);
  68.         }
  69.  
  70.         for(int i=1;i<=n;i++)
  71.         {
  72.             if(arr[i])ans++;
  73.         }
  74.  
  75.         printf("Case %d: %d\n",q+1,ans);
  76.     }
  77.  
  78.     return 0;
  79. }
Add Comment
Please, Sign In to add comment