Submission #318286

#TimeUsernameProblemLanguageResultExecution timeMemory
318286NintsiChkhaidzeConnecting Supertrees (IOI20_supertrees)C++14
0 / 100
1 ms364 KiB
#include "supertrees.h" #include <iostream> #include <vector> #define pb push_back using namespace std; vector<vector<int>> answer; vector <int> row; int par[10005]; int P(int x){ if (par[x] == x) return x; else return par[x] = P(par[x]); } void dsu(int x,int y){ int px = P(x),py = P(y); par[py] = px; } int construct(vector<vector<int>> p) { int n = p.size(),r=0; for (int i=0;i<n;i++) par[i]=i; for(int i=0;i<n;i++){ row.clear(); for (int j=0;j<n;j++){ if (p[i][j] == 3) return 0; if (p[i][j] == 1) r++; if (p[i][i] != 1) return 0; row.pb(0); } answer.pb(row); } if (r == n*n) { for (int i=0;i<n;i++){ vector<int> row; row.clear(); for (int j=0;j<n;j++){ if (j == i + 1 || j == i - 1) row.pb(1); else row.pb(0); } answer.push_back(row); } build(answer); return 1; } else{ for (int i=0;i<n;i++){ for (int j=0;j<n;j++){ if (p[i][j] == 1 && P(i)!=P(j)){ dsu(i,j); answer[i][j]=answer[j][i]=1; } } } for(int i=0;i<n;i++){ for (int j=0;j<n;j++){ if (P(i)==P(j) && p[i][j]==0) return 0; if (P(i)!=P(j) && p[i][j]==1) return 0; } } build(answer); 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...