답안 #156329

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
156329 2019-10-05T06:59:48 Z Akashi Pipes (CEOI15_pipes) C++14
10 / 100
3206 ms 65540 KB
#include <bits/stdc++.h>
using namespace std;

struct dsu{
    int TT[100001];

    void init(int n){
        for(int i = 1; i <= n ; ++i) TT[i] = i;
    }

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

    int find(int x){
        int R = x;
        while(R != TT[R]) R = TT[R];

        while(x != TT[x]){
            int aux = TT[x];
            TT[x] = R;
            x = aux;
        }

        return R;
    }

};

dsu A, B;
int n, m;
int low[100001], h[100001];
bool viz[100001];
vector <int> v[100001];

void tarjan(int nod, int papa = 0){
    viz[nod] = 1;
    for(auto it : v[nod]){
        if(papa == it) continue ;

        if(!viz[it]){
            low[it] = h[it] = h[nod] + 1;
            tarjan(it, nod);
            low[nod] = min(low[nod], low[it]);
            if(low[it] > h[nod]) printf("%d %d\n", it, nod);
        }
        else low[nod] = min(h[it], low[nod]);
    }
}

int main()
{
    scanf("%d%d", &n, &m);

    A.init(n); B.init(n);

    int x, y;
    for(int i = 1; i <= m ; ++i){
        scanf("%d%d", &x, &y);
//        if(A.find(x) != A.find(y)){
            v[x].push_back(y);
            v[y].push_back(x);
//            A.unite(A.find(x), A.find(y));
//        }
//        else if(B.find(x) != B.find(y)){
//            v[x].push_back(y);
//            v[y].push_back(x);
//            B.unite(B.find(x), B.find(y));
//        }
    }

    for(int i = 1; i <= n ; ++i) if(!viz[i]) tarjan(i);

    return 0;
}

Compilation message

pipes.cpp: In function 'int main()':
pipes.cpp:51:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d%d", &n, &m);
     ~~~~~^~~~~~~~~~~~~~~~
pipes.cpp:57:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         scanf("%d%d", &x, &y);
         ~~~~~^~~~~~~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 4 ms 2680 KB Output is correct
2 Incorrect 4 ms 2680 KB Wrong number of edges
# 결과 실행 시간 메모리 Grader output
1 Correct 8 ms 3192 KB Output is correct
2 Incorrect 8 ms 3064 KB Wrong number of edges
# 결과 실행 시간 메모리 Grader output
1 Correct 180 ms 10832 KB Output is correct
2 Correct 177 ms 10188 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 359 ms 14220 KB Output is correct
2 Runtime error 417 ms 18688 KB Memory limit exceeded (if you are sure your verdict is not MLE, please contact us)
# 결과 실행 시간 메모리 Grader output
1 Runtime error 588 ms 25196 KB Memory limit exceeded (if you are sure your verdict is not MLE, please contact us)
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 926 ms 31040 KB Memory limit exceeded (if you are sure your verdict is not MLE, please contact us)
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 1759 ms 52924 KB Memory limit exceeded (if you are sure your verdict is not MLE, please contact us)
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 2529 ms 65540 KB Execution killed with signal 9 (could be triggered by violating memory limits)
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 2643 ms 65536 KB Execution killed with signal 9 (could be triggered by violating memory limits)
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 3206 ms 65540 KB Execution killed with signal 9 (could be triggered by violating memory limits)
2 Halted 0 ms 0 KB -