Submission #48433

#TimeUsernameProblemLanguageResultExecution timeMemory
48433PajarajaNetwork (BOI15_net)C++17
0 / 100
17 ms18568 KiB
#include <bits/stdc++.h> using namespace std; int cnt,nes; vector<int> g[200007],d[200007]; vector<bool> v[200007]; int k[200007]; void dfs(int s,int f) { if(g[s].size()==1) { d[f].push_back(s); v[f].push_back(false); k[f]++; return; } for(int i=0;i<g[s].size();i++) if(g[s][i]!=f) dfs(g[s][i],s); if(f!=0) { for(int i=0;i<d[s].size()-2;i+=(i%2==0?1:3)) { if(k[s]<=2) break; printf("%d %d\n",d[s][i],d[s][i+2]); v[s][i]=true; v[s][i+2]=true; k[s]-=2; } for(int i=0;i<d[s].size();i++) if(!v[s][i]) { d[f].push_back(d[s][i]); v[f].push_back(false); k[f]++; } } else { if(k[s]<3) printf("%d %d\n",d[s][0],d[s][1]); else { if(k[s]%2==1) printf("%d %d\n",d[s][k[s]-1],s); int a=k[s]/2; for(int i=0;i<k[s]/2;i++) printf("%d %d\n",d[s][i],d[s][i+a]); } } } int main() { int n,v1,v2,l=0; nes=0; fill(k,k+200007,0); scanf("%d",&n); for(int i=0;i<n-1;i++) { scanf("%d%d",&v1,&v2); g[v1].push_back(v2); g[v2].push_back(v1); } if(n==2) { printf("1\n1 2"); return 0; } if(n==1) { printf("1\n1 1"); return 0; } for(int i=1;i<=n;i++) if(g[i].size()==1) l++; printf("%d\n",(l+1)/2); for(int i=1;i<=n;i++) if(g[i].size()>1) { dfs(i,0); return 0; } return 0; }

Compilation message (stderr)

net.cpp: In function 'void dfs(int, int)':
net.cpp:16:18: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(int i=0;i<g[s].size();i++) if(g[s][i]!=f) dfs(g[s][i],s);
                 ~^~~~~~~~~~~~
net.cpp:19:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         for(int i=0;i<d[s].size()-2;i+=(i%2==0?1:3))
                     ~^~~~~~~~~~~~~~
net.cpp:27:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         for(int i=0;i<d[s].size();i++) if(!v[s][i])
                     ~^~~~~~~~~~~~
net.cpp: In function 'int main()':
net.cpp:50:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d",&n);
     ~~~~~^~~~~~~~~
net.cpp:53:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         scanf("%d%d",&v1,&v2);
         ~~~~~^~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...