제출 #305696

#제출 시각아이디문제언어결과실행 시간메모리
305696a_player슈퍼트리 잇기 (IOI20_supertrees)C++14
0 / 100
1 ms256 KiB
#include "supertrees.h" #include <bits/stdc++.h> using namespace std; const int nax=1e3+3; int alt[nax]; int link[nax]; int find(int a){ if(link[a]==a)return a; return link[a]=find(link[a]); } void unite(int a,int b){ int x=find(a); int y=find(b); if(x==y)return; if(alt[x]>alt[y])link[y]=x; else{ link[x]=y; if(alt[x]==alt[y])alt[y]++; } } bool same(int a, int b){ return find(a)==find(b); } int construct(std::vector<std::vector<int>> p){ int n=p.size(); vector<vector<int>> b(n,vector<int>(n)); for(int i=0;i<n;i++) for(int j=i+1;j<n;j++){ if(p[i][j]==1&&!same(i,j)){ unite(i,j); b[i][j]=1; b[j][i]=1; } } for(int i=0;i<n;i++) for(int j=i+1;j<n;j++)if(same(i,j)&&p[i][j]==0)return 0; build(b); return 1; }
#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...