Submission #224134

#TimeUsernameProblemLanguageResultExecution timeMemory
224134kshitij_sodaniPipes (CEOI15_pipes)C++17
100 / 100
1516 ms15536 KiB
#include <iostream> #include <bits/stdc++.h> using namespace std; #define a first #define b second #define pb push_back int n,m; int par[100001]; int par2[100001]; int find(int no){ if(par[no]==no){ return no; } par[no]=find(par[no]); return par[no]; } int find2(int no){ if(par2[no]==no){ return no; } par2[no]=find2(par2[no]); return par2[no]; } vector<pair<int,int>> adj[100001]; int cco=1; void dfs(int no,int par3=-1){ par[no]=cco; cco+=1; for(auto nn:adj[no]){ if(par[nn.a]>0){ if(nn.b==par3){ continue; } if(par[nn.a]>=par[no]){ continue; } par2[nn.a]-=1; par2[no]+=1; } else{ dfs(nn.a,nn.b); if(par2[nn.a]==0){ // if(kk[{no,nn.a}]==1){ cout<<no+1<<" "<<nn.a+1<<endl; // } } par2[no]+=par2[nn.a]; } } } int main(){ ios_base::sync_with_stdio(false); cin.tie(NULL); cin>>n>>m; for(int i=0;i<n;i++){ par[i]=i; par2[i]=i; } int aa,bb; int cc,dd; int e,f; int ind=0; for(int i=0;i<m;i++){ cin>>cc>>dd; cc-=1; dd-=1; aa=find(cc); bb=find(dd); /*if(kk[{cc,dd}]==1){ kk[{cc,dd}]+=1; kk[{dd,cc}]+=1; }*/ if(aa==bb){ e=find2(cc); f=find2(dd); if(e==f){ continue; } adj[cc].pb({dd,ind}); adj[dd].pb({cc,ind}); /* kk[{cc,dd}]+=1; kk[{dd,cc}]+=1;*/ par2[e]=f; ind+=1; } else{ par[aa]=bb; adj[cc].pb({dd,ind}); adj[dd].pb({cc,ind}); /* kk[{cc,dd}]+=1; kk[{dd,cc}]+=1;*/ ind+=1; } // cout<<cc<<",,,,,,,,"<<dd<<endl; } //vis=par //dp=par2 for(int i=0;i<n;i++){ par[i]=0; par2[i]=0; } for(int i=0;i<n;i++){ if(par[i]==0){ dfs(i); } } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...