Task: | Road network |
Sender: | PLS2020 |
Submission time: | 2020-10-03 15:51:27 +0300 |
Language: | C++ (C++11) |
Status: | READY |
Result: | WRONG ANSWER |
test | verdict | time | |
---|---|---|---|
#1 | ACCEPTED | 0.01 s | details |
#2 | ACCEPTED | 0.01 s | details |
#3 | WRONG ANSWER | 0.01 s | details |
#4 | ACCEPTED | 0.01 s | details |
#5 | ACCEPTED | 0.01 s | details |
#6 | WRONG ANSWER | 0.12 s | details |
#7 | ACCEPTED | 0.11 s | details |
#8 | ACCEPTED | 0.09 s | details |
#9 | WRONG ANSWER | 0.16 s | details |
#10 | ACCEPTED | 0.11 s | details |
#11 | ACCEPTED | 0.01 s | details |
Code
#include <vector> #include <iostream> #include <queue> int main(void) { int n, m; std::ios_base::sync_with_stdio(false); std::cin >> n; std::cin >> m; std::vector<std::vector<int>> routes(n + 1); for (int i = 0; i < m; ++i) { int a; int b; std::cin >> a; std::cin >> b; routes[a].push_back(b); } std::vector<bool> solution(n + 1); // If we've reached the intersection from the // currently processed node. It is written into // the array, if we haven't reached that node it will // be out of date std::vector<int> reached(n + 1); for (int i = 1; i < n + 1; ++i) { std::queue<int> q; std::vector<int> visited; q.push(i); while (!q.empty()) { int node = q.front(); q.pop(); reached[node] = i; visited.push_back(node); // If we can already reach every other node from this one, stop if (solution[node]) { for (auto v : visited) { solution[v] = true; } break; } for (int c : routes[node]) { if (reached[c] != i) { q.push(c); } } } if (solution[i]) { continue; } for (int r = 1; r < n + 1; ++r) { if (reached[r] != i) { std::cout << "NO" << std::endl; std::cout << i << " " << r << std::endl; return 0; } } solution[i] = true; } std::cout << "YES" << std::endl; return 0; }
Test details
Test 1
Verdict: ACCEPTED
input |
---|
10 20 8 1 9 5 6 10 6 1 ... |
correct output |
---|
NO 7 1 |
user output |
---|
NO 7 1 |
Test 2
Verdict: ACCEPTED
input |
---|
10 20 2 10 10 6 8 5 3 8 ... |
correct output |
---|
NO 1 2 |
user output |
---|
NO 1 2 |
Test 3
Verdict: WRONG ANSWER
input |
---|
10 20 10 2 1 5 8 3 5 6 ... |
correct output |
---|
NO 9 1 |
user output |
---|
YES |
Test 4
Verdict: ACCEPTED
input |
---|
10 20 9 6 10 4 7 2 10 5 ... |
correct output |
---|
NO 6 1 |
user output |
---|
NO 6 1 |
Test 5
Verdict: ACCEPTED
input |
---|
10 20 5 9 10 2 3 5 7 4 ... |
correct output |
---|
YES |
user output |
---|
YES |
Test 6
Verdict: WRONG ANSWER
input |
---|
100000 200000 64780 62469 32706 84268 37795 14893 23995 68041 ... |
correct output |
---|
NO 40590 1 |
user output |
---|
YES |
Test 7
Verdict: ACCEPTED
input |
---|
100000 200000 74725 92399 25141 53472 70762 85785 47091 71621 ... |
correct output |
---|
NO 96983 1 |
user output |
---|
NO 96983 1 |
Test 8
Verdict: ACCEPTED
input |
---|
100000 200000 50342 88741 55031 42206 24989 54546 666 39964 ... |
correct output |
---|
NO 1 68638 |
user output |
---|
NO 1 68638 |
Test 9
Verdict: WRONG ANSWER
input |
---|
100000 200000 51243 54643 90493 3012 62110 9430 5809 45601 ... |
correct output |
---|
NO 48024 1 |
user output |
---|
YES |
Test 10
Verdict: ACCEPTED
input |
---|
100000 200000 5524 49109 87052 72192 46434 18442 67624 38661 ... |
correct output |
---|
YES |
user output |
---|
YES |
Test 11
Verdict: ACCEPTED
input |
---|
7 10 1 2 2 1 1 4 5 4 ... |
correct output |
---|
NO 2 3 |
user output |
---|
NO 1 3 |