제출 #431160

#제출 시각아이디문제언어결과실행 시간메모리
431160Rouge_Hugo슈퍼트리 잇기 (IOI20_supertrees)C++14
11 / 100
277 ms26180 KiB
#include<bits/stdc++.h> #include "supertrees.h" #include <vector> #define fi first #define se second #define pb push_back using namespace std; int n;const int N=1009; vector<vector<int>>ans; int pa[N],sz[N],p[N][N],vis[N]; vector<int>v[N];vector<int>sta; vector<int>u; void merge(int x,int y) { x=pa[x];y=pa[y]; if(x==y)return; if(sz[x]<sz[y])swap(x,y); for(auto it:v[y]) { sz[x]++; v[x].pb(it); pa[it]=x; } } void go(int x) { sta.clear();int last=x; for(auto it:v[x])sta.pb(it); for(int i=x+1;i<u.size();i++) { if(vis[i])continue; int r=1,re=0; for(auto it:v[i]) { for(auto pp:sta) { if(p[it][pp]!=2)r=0; if(p[it][pp]==2)re=1; } } if(r==0&&re==1)while(1)vis[i]++; if(r==0)continue; vis[i]=1; for(auto it:v[i])sta.pb(it); ans[last][i]=1; ans[i][last]=1; last=i; } if(ans[x][last])return; if(x==last)return; ans[x][last]=1; ans[last][x]=1; } vector<int>w; int construct(vector<vector<int>> P) { n = P.size(); for(int i=0;i<n;i++) { pa[i]=i;sz[i]=1;v[i].pb(i); } for(int i=0;i<n;i++) { for(int j=0;j<n;j++) { if(i==j)continue; p[i][j]=P[i][j]; if(p[i][j]==1)merge(i,j); } } for(int i=0;i<n;i++)w.pb(0); for(int i=0;i<n;i++) { ans.pb(w); } for(int i=0;i<n;i++) { if(pa[i]!=i)continue; for(auto it:v[i]) { if(it==i)continue; ans[i][it]=1; ans[it][i]=1; } u.pb(i); } for(int i=0;i<u.size();i++) { int it=u[i]; if(vis[it])continue; vis[it]=1; go(it); } build(ans);return 1; }

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

supertrees.cpp: In function 'void go(int)':
supertrees.cpp:29:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   29 |     for(int i=x+1;i<u.size();i++)
      |                   ~^~~~~~~~~
supertrees.cpp: In function 'int construct(std::vector<std::vector<int> >)':
supertrees.cpp:86:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   86 |     for(int i=0;i<u.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...