Submission #1063232

#TimeUsernameProblemLanguageResultExecution timeMemory
1063232jamjanekConnecting Supertrees (IOI20_supertrees)C++14
0 / 100
1 ms348 KiB
#include "supertrees.h" #include <bits/stdc++.h> using namespace std; int father1[1010], father[1010]; int find1(int x){ if(father1[x]==x)return x; return father1[x] = find1(father1[x]); } int find2(int x){ if(father[x]==x)return x; return father[x] = find2(father[x]); } int construct(std::vector<std::vector<int>> p) { int n = p.size(), i, j; for(i=0;i<n;i++)father[i] = father1[i] = i; std::vector<std::vector<int>> answer = p; for(i=0;i<n;i++) for(j=0;j<n;j++) answer[i][j] = 0; for(i=0;i<n;i++) for(j=0;j<n;j++){ if(p[i][j]==3 || (i==j && p[i][j]!=1) || (p[i][j]!=p[j][i])) return 0; if(p[i][j]>0) father1[find1(i)] = find1(j); else if(find1(i)==find2(j))return 0; if(p[i][j]==1 && find2(i)!=find2(j)){ father[find2(i)] = find2(j); answer[i][j] = answer[j][i] = 1; } } for (int i = 0; i < n; i++) { std::vector<int> row; row.resize(n); answer.push_back(row); } 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...