답안 #611945

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
611945 2022-07-29T08:58:56 Z 이동현(#8500) Izlet (COI19_izlet) C++17
0 / 100
489 ms 128880 KB
#include <bits/stdc++.h>
#define int long long
using namespace std;

int n;
int a[3004][3004];
int ndis[3004][3004];
int pr[3004], chk[3004], col[3004], colN;
vector<pair<int, int>> ans;

int fd(int x){
    return (x == pr[x] ? x : pr[x] = fd(pr[x]));
}

void unite(int x, int y){
    x = fd(x), y = fd(y);
    pr[x] = y;
}

void dfs(int x){
    chk[x] = 1;
    for(int nxt = 1; nxt <= n; ++nxt){
        if(fd(nxt) != nxt || chk[nxt] || a[x][nxt] != 2){
            continue;
        }
        ans.push_back({x, nxt});
        int didis = (int)1e9, id = 0;
        for(int j = 1; j <= n; ++j){
            if(chk[j]){
                ndis[j][nxt] = ndis[nxt][j] = ndis[j][x] + 1;
                if(a[j][nxt] == a[j][x] && ndis[j][nxt] < didis){
                    didis = ndis[j][nxt];
                    id = j;
                }
            }
        }
        if(id){
            col[nxt] = col[id];
        }
        else{
            col[nxt] = ++colN;
        }
        dfs(nxt);
    }
}

signed main(){
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    cin >> n;
    cin >> n;
    for(int i = 1; i <= n; ++i){
        pr[i] = i;
    }
    for(int i = 1; i <= n; ++i){
        for(int j = 1; j <= n; ++j){
            cin >> a[i][j];
            if(a[i][j] == 1){
                unite(i, j);
            }
        }
    }
    col[1] = ++colN;
    dfs(fd(1));
    for(int i = 1; i <= n; ++i){
        cout << col[fd(i)] << ' ';
    }
    cout << '\n';
    for(int i = 1; i <= n; ++i){
        if(i != fd(i)) cout << i << ' ' << fd(i) << '\n';
    }
    for(auto&i:ans){
        cout << i.first << ' ' << i.second << '\n';
    }
    return 0;
}
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 468 KB Integer 0 violates the range [1, 30]
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 489 ms 128880 KB Integer 0 violates the range [1, 3000]
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 468 KB Integer 0 violates the range [1, 30]
2 Halted 0 ms 0 KB -