Submission #1116101

#TimeUsernameProblemLanguageResultExecution timeMemory
1116101vjudge1Pipes (CEOI15_pipes)C++17
30 / 100
2133 ms35788 KiB
#include<bits/stdc++.h> using namespace std; #define pb push_back const int lim=1e5+1; int parent[lim]; int find(int i){ if(i==parent[i])return i; return parent[i]=find(parent[i]); } void unite(int i,int j){ i=find(i),j=find(j); parent[i]=j; } struct vec{ int*targ=new int[5],size=5,have=0; void pb(int t){ if(have==size){ int*newy=new int[size*2]; for(int i=0;i<size;i++)newy[i]=targ[i]; size*=2; delete targ; targ=newy; } targ[have++]=t; } void clear(){ have=0; size=5; delete targ; targ=new int[5]; } }; vec v[lim]; vector<pair<int,int>>edges; int tin[lim],tout[lim],tt=1; int dfs(int node,int par){ if(tout[node])return tout[node]; tout[node]=tin[node]=tt++; for(int i=0;i<v[node].have;i++){ int j=v[node].targ[i]; if(j==par)continue; int res=dfs(j,node); if(res<=tin[node]){ unite(node,j); } tout[node]=min(tout[node],res); } return tout[node]; } int n,m; void findans(){ for(int i=0;i<=n;i++)v[i].clear(); for(auto[x,y]:edges){ v[find(x)].pb(find(y)); v[find(y)].pb(find(x)); } for(int i=1;i<=n;i++){ tout[i]=tin[i]=0; } tt=1; for(int i=1;i<=n;i++){ if(!tout[i])dfs(i,0); } for(int i=0;i<edges.size();i++){ if(find(edges[i].first)==find(edges[i].second)){ swap(edges[i],edges.back()); edges.pop_back(); i--; } } } int main(){ cin>>n>>m; for(int i=1;i<=n;i++)parent[i]=i; for(int i=0;i<m;i++){ int x,y; cin>>x>>y; if(find(x)!=find(y))edges.pb({x,y}); if(edges.size()==200000)findans(); } findans(); for(auto[x,y]:edges)cout<<x<<' '<<y<<'\n'; }

Compilation message (stderr)

pipes.cpp: In function 'void findans()':
pipes.cpp:71:16: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   71 |   for(int i=0;i<edges.size();i++){
      |               ~^~~~~~~~~~~~~
#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...