답안 #65043

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
65043 2018-08-06T13:38:48 Z bazsi700 007 (CEOI14_007) C++14
0 / 100
521 ms 17516 KB
#include <bits/stdc++.h>

using namespace std;

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    int n,m,s,d,a,b;
    cin >> n >> m >> s >> d >> a >> b;
    vector<vector<int> > graph(n+1,vector<int>());
    for(int i = 0; i < m; i++) {
        int x,y;
        cin >> x >> y;
        graph[x].push_back(y);
        graph[y].push_back(x);
    }
    vector<bool> wass(n+1,false);
    vector<int> dists(n+1,0);
    vector<bool> wasd(n+1,false);
    vector<int> distd(n+1,0);
    vector<bool> wasa(n+1,false);
    vector<int> dista(n+1,0);
    vector<bool> wasb(n+1,false);
    vector<int> distb(n+1,0);
    wass[s] = true;
    queue<int> q;
    q.push(s);
    while(!q.empty()) {
        int v = q.front();
        q.pop();
        for(int u : graph[v]) {
            if(!wass[u]) {
                wass[u] = true;
                q.push(u);
                dists[u] = dists[v]+1;
            }
        }
    }
    wasd[d] = true;
    q.push(d);
    while(!q.empty()) {
        int v = q.front();
        q.pop();
        for(int u : graph[v]) {
            if(!wasd[u]) {
                wasd[u] = true;
                q.push(u);
                distd[u] = distd[v]+1;
            }
        }
    }
    wasa[a] = true;
    q.push(a);
    while(!q.empty()) {
        int v = q.front();
        q.pop();
        for(int u : graph[v]) {
            if(!wasa[u]) {
                wasa[u] = true;
                q.push(u);
                dista[u] = dista[v]+1;
            }
        }
    }
    wasb[b] = true;
    q.push(b);
    while(!q.empty()) {
        int v = q.front();
        q.pop();
        for(int u : graph[v]) {
            if(!wasb[u]) {
                wasb[u] = true;
                q.push(u);
                distb[u] = distb[v]+1;
            }
        }
    }
    if(dists[a] == dists[b] && distd[a] == distd[b]) {
        int mxdistd = -1;
        int mxdists = -1;
        for(int i = 1; i <= n; i++) {
            if(dista[i] == distb[i]) {
                if(dista[i]+distd[i] == distd[a]) {
                    mxdistd = max(mxdistd,dista[i]);
                }
                if(dista[i]+dists[i] == dists[a]) {
                    mxdists = max(mxdists,dista[i]);
                }
            }
        }
        if(mxdists >= mxdistd) {
            cout << max(min(distd[a]-dists[a],distd[b]-dists[b])-1,-1);
        } else {
            cout << max(min(distd[a]-dists[a],distd[b]-dists[b]),-1);
        }
    } else {
        cout << max(min(distd[a]-dists[a],distd[b]-dists[b]),-1);
    }
    return 0;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 4 ms 376 KB Output is correct
2 Correct 3 ms 464 KB Output is correct
3 Partially correct 2 ms 532 KB Partially correct
4 Incorrect 3 ms 608 KB Output isn't correct
5 Incorrect 2 ms 608 KB Output isn't correct
6 Correct 2 ms 608 KB Output is correct
7 Correct 2 ms 608 KB Output is correct
8 Incorrect 2 ms 608 KB Output isn't correct
9 Correct 3 ms 608 KB Output is correct
10 Correct 2 ms 724 KB Output is correct
11 Correct 3 ms 724 KB Output is correct
12 Incorrect 2 ms 724 KB Output isn't correct
13 Correct 3 ms 724 KB Output is correct
14 Incorrect 3 ms 724 KB Output isn't correct
15 Correct 3 ms 724 KB Output is correct
16 Incorrect 4 ms 724 KB Output isn't correct
17 Incorrect 2 ms 724 KB Output isn't correct
18 Incorrect 2 ms 724 KB Output isn't correct
19 Correct 3 ms 724 KB Output is correct
20 Correct 3 ms 724 KB Output is correct
21 Correct 3 ms 724 KB Output is correct
22 Correct 5 ms 740 KB Output is correct
23 Correct 3 ms 740 KB Output is correct
24 Incorrect 3 ms 740 KB Output isn't correct
# 결과 실행 시간 메모리 Grader output
1 Correct 43 ms 3428 KB Output is correct
2 Incorrect 64 ms 4836 KB Output isn't correct
3 Correct 36 ms 4836 KB Output is correct
4 Incorrect 74 ms 5100 KB Output isn't correct
5 Correct 55 ms 5100 KB Output is correct
6 Correct 44 ms 5100 KB Output is correct
7 Correct 52 ms 5100 KB Output is correct
8 Correct 57 ms 5100 KB Output is correct
9 Incorrect 106 ms 5100 KB Output isn't correct
10 Correct 286 ms 9196 KB Output is correct
11 Incorrect 134 ms 9196 KB Output isn't correct
12 Correct 169 ms 9196 KB Output is correct
13 Incorrect 122 ms 9196 KB Output isn't correct
14 Correct 105 ms 9196 KB Output is correct
15 Correct 188 ms 9196 KB Output is correct
16 Correct 133 ms 9260 KB Output is correct
17 Correct 130 ms 9260 KB Output is correct
18 Incorrect 114 ms 9260 KB Output isn't correct
19 Correct 176 ms 9584 KB Output is correct
20 Incorrect 319 ms 12524 KB Output isn't correct
21 Incorrect 172 ms 12524 KB Output isn't correct
22 Correct 145 ms 12524 KB Output is correct
23 Correct 161 ms 12524 KB Output is correct
24 Correct 204 ms 12524 KB Output is correct
25 Incorrect 196 ms 12524 KB Output isn't correct
26 Correct 170 ms 12524 KB Output is correct
27 Correct 183 ms 12524 KB Output is correct
28 Correct 208 ms 12524 KB Output is correct
29 Correct 274 ms 12524 KB Output is correct
30 Incorrect 385 ms 13676 KB Output isn't correct
31 Incorrect 224 ms 13676 KB Output isn't correct
32 Correct 227 ms 13676 KB Output is correct
33 Correct 270 ms 13676 KB Output is correct
34 Incorrect 261 ms 13676 KB Output isn't correct
35 Incorrect 226 ms 13676 KB Output isn't correct
36 Incorrect 281 ms 13676 KB Output isn't correct
37 Correct 293 ms 14444 KB Output is correct
38 Correct 273 ms 14444 KB Output is correct
39 Correct 290 ms 14444 KB Output is correct
40 Incorrect 308 ms 15340 KB Output isn't correct
41 Correct 521 ms 17516 KB Output is correct