Submission #803540

#TimeUsernameProblemLanguageResultExecution timeMemory
803540WarinchaiConnecting Supertrees (IOI20_supertrees)C++14
21 / 100
181 ms27972 KiB
#include "supertrees.h" #include <vector> #include<bits/stdc++.h> using namespace std; int sz; vector<vector<int> >v; vector<vector<int> >ans; int pr[1005]; int fp(int a){ if(pr[a]==a){ return a; } return pr[a]=fp(pr[a]); } void un(int a,int b){ if(fp(a)!=fp(b)){ ans[a][b]=1; ans[b][a]=1; pr[fp(b)]=fp(a); } } void build_1(){ for(int i=0;i<sz;i++){ for(int j=i+1;j<sz;j++){ if(v[i][j]==1){ un(i,j); } } } } bool check_0(){ for(int i=0;i<sz;i++){ for(int j=i+1;j<sz;j++){ if(v[i][j]==0&&fp(i)==fp(j))return 0; } } return 1; } int construct(vector<vector<int> > p) { //cout<<"work"<<endl; sz = p.size(); bool check=0; v.resize(sz); for(int i=0;i<sz;i++){ v[i].resize(sz); } for(int i=0;i<sz;i++){ for(int j=0;j<sz;j++){ //cout<<"i j "<<i<<" "<<j<<endl; v[i][j]=p[i][j]; if(p[i][j]!=p[j][i]||(i==j&&p[i][j]!=1)){ check=1; //cout<<"break"<<endl; break; } } } //cout<<"work"<<endl; if(check){ return 0; } //cout<<"work"<<endl; ans.resize(sz); for(int i=0;i<sz;i++){ ans[i].resize(sz); } for(int i=0;i<sz;i++){ pr[i]=i; } //cout<<"work"<<endl; build_1(); if(!check_0()){ return 0; }else{ build(ans); } //cout<<"ans:"<<endl; 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...