답안 #870726

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
870726 2023-11-09T02:09:29 Z NeroZein Izlet (COI19_izlet) C++17
18 / 100
371 ms 35924 KB
#include "bits/stdc++.h"
using namespace std;
 
#ifdef Nero
#include "Deb.h"
#else
#define deb(...)
#endif
 
const int N = 3003;
 
int pr[N]; 
int dep[N]; 
int col[N]; 
int c[N][N]; 
bool off[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]; 
    }
  }
  for (int i = 1; i <= n; ++i) {
    if (off[i]) continue;
    for (int j = 1; j <= n; ++j) {
      if (c[i][j] == 1 && i != j) {
        pr[j] = i;
        off[j] = true;  
      }
    }
  }
  pr[1] = 1; 
  col[1] = 1; 
  int cnt = 2; 
  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);
        dep[i] = dep[v] + 1; 
        int f = 0; 
        for (int j = 1; j <= n; ++j) {
          if (c[v][j] == c[i][j] && col[j] && (!f || dep[f] >= dep[j])) {
             f = j; 
          }
        }
        for (int j = 1; j <= n; ++j) {
          if (f && col[j] && c[v][j] == c[i][j] && dep[f] == dep[j]) {
            assert(col[f] == col[j]); 
          }
        }
        if (!f) {
          col[i] = cnt++; 
        } else {
          assert(col[f]);
          col[i] = col[f]; 
        }
      }
    }
  }
  for (int i = 1; i <= n; ++i) {
    assert(col[i] || col[pr[i]]); 
    cout << (!off[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;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 2396 KB Output is correct
2 Correct 353 ms 35708 KB Output is correct
3 Correct 371 ms 35924 KB Output is correct
4 Correct 352 ms 35736 KB Output is correct
5 Correct 348 ms 35664 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Incorrect 349 ms 35664 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 2396 KB Output is correct
2 Correct 353 ms 35708 KB Output is correct
3 Correct 371 ms 35924 KB Output is correct
4 Correct 352 ms 35736 KB Output is correct
5 Correct 348 ms 35664 KB Output is correct
6 Incorrect 349 ms 35664 KB Output isn't correct
7 Halted 0 ms 0 KB -