Submission #223895

#TimeUsernameProblemLanguageResultExecution timeMemory
223895MKopchevPipes (CEOI15_pipes)C++14
40 / 100
1850 ms65536 KiB
#include<bits/stdc++.h> using namespace std; const int nmax=1e5+42; vector< pair<int/*to*/,int/*id*/> > adj[nmax]; int in[nmax],low[nmax],t=0; int n,m; void dfs(int node,int par_edge) { if(in[node])return; t++; in[node]=t; low[node]=t; //cout<<t<<" -> "<<node<<endl; for(auto k:adj[node]) if(k.second!=par_edge) { dfs(k.first,k.second); //cout<<"finished "<<node<<" "<<k.first<<" "<<low[k.first]<<endl; if(in[node]<in[k.first]&&in[node]<low[k.first]) { printf("%i %i\n",node,k.first); } else low[node]=min(low[k.first],low[node]); } } int parent[2][nmax]; int root(int id,int node) { if(parent[id][node]==node)return node; parent[id][node]=root(id,parent[id][node]); return parent[id][node]; } int main() { scanf("%i%i",&n,&m); for(int i=1;i<=n;i++) { parent[0][i]=i; parent[1][i]=i; } int u,v; for(int i=1;i<=m;i++) { scanf("%i%i",&u,&v); bool keep=0; for(int j=0;j<2;j++) { if(root(j,u)==root(j,v))continue; parent[j][root(j,u)]=parent[j][root(j,v)]; keep=1; break; } if(keep==0)continue; adj[u].push_back({v,i}); adj[v].push_back({u,i}); } //cout<<" --- "<<endl; for(int i=1;i<=n;i++) if(in[i]==0)dfs(i,0); return 0; }

Compilation message (stderr)

pipes.cpp: In function 'int main()':
pipes.cpp:44:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%i%i",&n,&m);
     ~~~~~^~~~~~~~~~~~~~
pipes.cpp:55:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         scanf("%i%i",&u,&v);
         ~~~~~^~~~~~~~~~~~~~
#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...