Submission #236440

#TimeUsernameProblemLanguageResultExecution timeMemory
236440KastandaIzlet (COI19_izlet)C++11
100 / 100
1560 ms109048 KiB
// Pied! #include<bits/stdc++.h> using namespace std; const int N = 3003; int n, sub, ts, A[N][N], F[N], C[N], D[N][N]; bool M[N][N], MR[N]; vector < int > Adj[N]; vector < pair < int , int > > E; void Root(int v, int p, int root) { for (int u : Adj[v]) if (u != p) D[root][u] = D[root][v] + 1, Root(u, v, root); } void DFS(int v, int p) { int best = -1; for (int i = 1; i <= n; i ++) if (MR[i] && A[v][i] == A[p][i] && (best == -1 || D[v][i] < D[v][best])) best = i; MR[v] = 1; if (best == -1) C[v] = ++ ts; else C[v] = C[best]; for (int u : Adj[v]) if (u != p) DFS(u, v); } int main() { scanf("%d%d", &sub, &n); for (int i = 1; i <= n; i ++) for (int j = 1; j <= n; j ++) scanf("%d", &A[i][j]); memset(F, 63, sizeof(F)); F[1] = 0; for (int __ = 1; __ <= n; __ ++) { int v = 0; for (int i = 1; i <= n; i ++) if (!MR[i] && (!v || F[i] < F[v])) v = i; bool ff = 0; for (int i = 1; i <= n && !ff; i ++) if (MR[i] && A[i][v] == F[v]) E.push_back({i, v}), Adj[i].push_back(v), Adj[v].push_back(i), ff = 1; MR[v] = 1; for (int i = 1; i <= n; i ++) if (!MR[i] && A[v][i] < F[i]) F[i] = A[v][i]; } memset(MR, 0, sizeof(MR)); for (int i = 1; i <= n; i ++) Root(i, 0, i); DFS(1, 0); for (int i = 1; i <= n; i ++) printf("%d ", C[i]); printf("\n"); for (auto X : E) printf("%d %d\n", X.first, X.second); return 0; }

Compilation message (stderr)

izlet.cpp: In function 'int main()':
izlet.cpp:32:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d%d", &sub, &n);
     ~~~~~^~~~~~~~~~~~~~~~~~
izlet.cpp:35:18: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
             scanf("%d", &A[i][j]);
             ~~~~~^~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...