Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- using namespace std;
- #define mx 100005
- int ans,vis[mx],low[mx],d[mx],par[mx],pkkkkk,arr[mx];vector<int>v[mx];
- void dfs(int s,int flag)
- {
- pkkkkk=pkkkkk+1;
- int child=0;
- d[s]=low[s]=pkkkkk;
- vis[s]=1;
- for(int i=0;i<v[s].size();i++)
- {
- int u=v[s][i];
- if(u==par[s])continue;
- if(vis[u]==1)
- {
- low[s]=min(low[s],d[u]);
- }
- else
- {
- par[u]=s;
- dfs(u,0);
- low[s]=min(low[u],low[s]);
- if(low[u]>=d[s]&&flag==0)
- {
- arr[s]=1;
- }
- child=child+1;
- }
- }
- if(child>1&&flag==1)
- {
- arr[s]=1;
- }
- }
- int main()
- {
- int t;
- scanf("%d",&t);
- for(int q=0;q<t;q++)
- {
- int n,m;pkkkkk=0;
- scanf("%d%d",&n,&m);
- ans=0;
- for(int i=1;i<=n;i++)
- {
- vis[i]=0;
- v[i].clear();
- arr[i]=0;
- }
- for(int i=0;i<m;i++)
- {
- int a,b;
- scanf("%d%d",&a,&b);
- v[a].push_back(b);
- v[b].push_back(a);
- }
- for(int i=1;i<=n;i++)
- {
- if(!vis[i])dfs(i,1);
- }
- for(int i=1;i<=n;i++)
- {
- if(arr[i])ans++;
- }
- printf("Case %d: %d\n",q+1,ans);
- }
- return 0;
- }
Add Comment
Please, Sign In to add comment