Submission #870713

#TimeUsernameProblemLanguageResultExecution timeMemory
870713NeroZeinIzlet (COI19_izlet)C++17
18 / 100
355 ms35960 KiB
#include "bits/stdc++.h" using namespace std; #ifdef Nero #include "Deb.h" #else #define deb(...) #endif const int N = 3003; int p[N]; int pr[N]; int col[N]; int c[N][N]; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int n; cin >> n >> n; for (int i = 1; i <= n; ++i) { for (int j = 1; j <= n; ++j) { cin >> c[i][j]; } } vector<pair<int, int>> ans; for (int i = 1; i <= n; ++i) { if (p[i] == 0) { for (int j = 1; j <= n; ++j) { if (c[i][j] == 1) { p[j] = i; if (i != j) { pr[j] = i; ans.emplace_back(i, j); } } } } } pr[1] = 1; int cnt = 2; col[1] = 1; queue<int> que; que.push(1); while (!que.empty()) { int v = que.front(); que.pop(); for (int i = 1; i <= n; ++i) { if (!pr[i] && c[v][i] == 2) { pr[i] = v; que.push(i); bool f = false; for (int j = 1; j <= n; ++j) { if (c[v][j] == c[i][j] && col[j]) { f = true; col[i] = col[j]; break; } } if (!f) { col[i] = cnt++; } } } } for (int i = 1; i <= n; ++i) { assert(col[i] || col[pr[i]]); cout << (col[i] ? col[i] : col[pr[i]]) << ' '; } cout << '\n'; for (int i = 2; i <= n; ++i) { assert(pr[i]); cout << pr[i] << ' ' << i << '\n'; } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...