제출 #1015497

#제출 시각아이디문제언어결과실행 시간메모리
1015497AliHasanliConnecting Supertrees (IOI20_supertrees)C++17
100 / 100
172 ms32724 KiB
#include "supertrees.h" #include <vector> #include <bits/stdc++.h> using namespace std; int sz[1001],par[1001],vis[1001]; int find(int a){ if(a==par[a]) return a; int x=find(par[a]); par[a]=x; return x; } void join(int x,int y){ x=find(x); y=find(y); if(x==y) return; if(sz[x]<sz[y]) swap(x,y); else if(sz[x]==sz[y] && x>y) swap(x,y); sz[x]+=sz[y]; par[y]=x; } vector<pair<int,int>> node[4]; vector<int> v[1001],x,y; int construct(vector<vector<int>> p) { int n = p.size(); for(int i=0;i<n;i++){ sz[i]=1; par[i]=i; for(int j=0;j<n;j++){ node[p[i][j]].push_back({i,j}); } } vector<vector<int>> answer(n,vector<int> (n,0)); for(pair<int,int>P:node[1]) join(P.first,P.second); for(int i=0;i<n;i++){ v[find(i)].push_back(i); } for(int i=0;i<n;i++){ if(v[i].size()==0) continue; for(int j=1;j<v[i].size();j++){ vis[v[i][j]]=1; answer[v[i][0]][v[i][j]]=answer[v[i][j]][v[i][0]]=1; } v[i].clear(); } for(pair<int,int>P:node[2]) join(P.first,P.second); for(int i=0;i<n;i++){ if(!vis[i]) v[find(i)].push_back(i); } for(int i=0;i<n;i++){ if(v[i].size()<2) continue; if(v[i].size()==2) return 0; answer[v[i][0]][v[i].back()]=answer[v[i].back()][v[i][0]]=1; for(int j=1;j<v[i].size();j++){ answer[v[i][j-1]][v[i][j]]=answer[v[i][j]][v[i][j-1]]=1; } } if(node[3].size()!=0) return 0; for(pair<int,int>P:node[0]) if(find(P.first)==find(P.second)) return 0; build(answer); return 1; }

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

supertrees.cpp: In function 'int construct(std::vector<std::vector<int> >)':
supertrees.cpp:39:16: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   39 |   for(int j=1;j<v[i].size();j++){
      |               ~^~~~~~~~~~~~
supertrees.cpp:53:16: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   53 |   for(int j=1;j<v[i].size();j++){
      |               ~^~~~~~~~~~~~
#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...