Submission #1258934

#TimeUsernameProblemLanguageResultExecution timeMemory
1258934Noname_1900Connecting Supertrees (IOI20_supertrees)C++20
0 / 100
0 ms328 KiB
#include "supertrees.h" #include<bits/stdc++.h> using namespace std; const int NMAX = 1000; int boss[NMAX]; vector<int> dansComp[NMAX]; int findBoss(int noeud) { if(boss[noeud] == noeud) return noeud; return boss[noeud] = findBoss(boss[noeud]); } bool merge(int a, int b) { a = findBoss(a); b = findBoss(b); if(a == b) return false; boss[b] = a; for(int i : dansComp[b]) dansComp[a].push_back(b); return true; } vector<vector<int>> answer; void creer(int a, int b) { a = findBoss(a); b = findBoss(b); if(a == b) return; answer[a][b] = 1; answer[b][a] = 1; merge(a, b); } int construct(vector<vector<int>> p) { int n = p.size(); answer.resize(n, vector<int>(n)); for(int i = 0; i < n; i++) { boss[i] = i; for(int v = 0; v < n; v++) answer[i][v] = 0; } /* for(int i = 0; i < n; i++) { for(int autre = 0; autre < i; autre++) { if(p[i][autre] == 1) { creer(findBoss(i), findBoss(autre)); } } } for(int i = 0; i < n; i++) { for(int autre = 0; autre < i; autre++) { if(p[i][autre] == 0) { if(findBoss(i) == findBoss(autre)) return 0; } } } /** */ for(int i = 0; i < n; i++) { for(int autre = 0; autre < i; autre++) { if(p[i][autre] == 2) { merge(findBoss(i), findBoss(autre)); } } } for(int i = 0; i < n; i++) { for(int autre = 0; autre < i; autre++) { if(p[i][autre] == 0) { if(findBoss(i) == findBoss(autre)) return 0; } } } for(int i = 0; i < n; i++) { if(findBoss(i) == i) { if(dansComp[i].size() == 1) continue; for(int iDansComp=0; iDansComp < dansComp[i].size(); iDansComp++) { int b; if(iDansComp == 0) { b = dansComp[i][dansComp[i].size()-1]; } else b = dansComp[i][iDansComp-1]; int a = dansComp[i][iDansComp]; answer[a][b] = 1; answer[b][a] = 1; } } } 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...