제출 #650557

#제출 시각아이디문제언어결과실행 시간메모리
650557DJeniUpVillage (BOI20_village)C++17
50 / 100
138 ms19368 KiB
#include "bits/stdc++.h" //#pragma GCC optimize("O3") using namespace std; typedef long long ll; typedef unsigned long long ull; typedef pair<ll,ll>pairll; typedef long double ld; #define fr first #define sc second #define pb push_back #define INF 100000000007 #define endl '\n' #define MOD 998244353 #define A 31 #define N 100007 #define eps 0.000000000001 ll n,res[N],resx; vector<ll>v[N]; pairll S(ll x,ll y){ vector<pairll>a; a.clear(); pairll b; for(int i=0;i<v[x].size();i++){ if(v[x][i]!=y){ b=S(v[x][i],x); if(b.fr==b.sc)a.pb(b); } } if(a.size()==0){ if(y==0){ res[b.sc]=x; res[x]=b.fr; resx+=2; return {0,0}; }else return {x,x}; }else{ a.pb({x,x}); ll m=a.size()-2; for(int i=0;i<=m;i++){ res[a[i].fr]=a[i+1].fr; resx+=2; } res[x]=a[0].fr; return {x,a[m].fr}; } } int main(){ cin>>n; for(int i=1;i<n;i++){ ll x,y; cin>>x>>y; v[x].pb(y); v[y].pb(x); } S(1,0); cout<<resx<<" "<<0<<endl; for(int i=1;i<=n;i++){ cout<<res[i]<<" "; } cout<<endl; for(int i=1;i<=n;i++){ cout<<i<<" "; } cout<<endl; return 0; }

컴파일 시 표준 에러 (stderr) 메시지

Village.cpp: In function 'pairll S(ll, ll)':
Village.cpp:29:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   29 |     for(int i=0;i<v[x].size();i++){
      |                 ~^~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...