Task: | Road network |
Sender: | jong |
Submission time: | 2018-10-20 15:05:43 +0300 |
Language: | C++ |
Status: | READY |
Result: | ACCEPTED |
test | verdict | time | |
---|---|---|---|
#1 | ACCEPTED | 0.01 s | details |
#2 | ACCEPTED | 0.02 s | details |
#3 | ACCEPTED | 0.01 s | details |
#4 | ACCEPTED | 0.02 s | details |
#5 | ACCEPTED | 0.01 s | details |
#6 | ACCEPTED | 0.18 s | details |
#7 | ACCEPTED | 0.17 s | details |
#8 | ACCEPTED | 0.16 s | details |
#9 | ACCEPTED | 0.18 s | details |
#10 | ACCEPTED | 0.18 s | details |
#11 | ACCEPTED | 0.02 s | details |
Code
#include <iostream> #include <vector> using namespace std; struct node { vector<int> out; vector<int> in; }; void explore(int ni, node *nodes, bool *visited, bool reversed) { visited[ni] = true; int k = reversed ? nodes[ni].in.size() : nodes[ni].out.size(); for (int i=0; i<k; ++i) { int nbr = reversed ? nodes[ni].in[i] : nodes[ni].out[i]; if (!visited[nbr]) explore(nbr, nodes, visited, reversed); } } int main() { ios::sync_with_stdio(0); cin.tie(0); int n, m; cin >> n; cin >> m; node nodes[n]; bool visited[n]; for (int i=0; i<n; ++i) visited[i] = false; int a, b; for (int i=0; i<m; ++i) { cin >> a; cin >> b; nodes[a-1].out.push_back(b-1); nodes[b-1].in.push_back(a-1); } explore(0, nodes, visited, false); for (int i=0; i<n; ++i) { if (!visited[i]) { cout << "NO\n" << 1 << " " << (i+1) << "\n"; return 0; } } for (int i=0; i<n; ++i) visited[i] = false; explore(0, nodes, visited, true); for (int i=0; i<n; ++i) { if (!visited[i]) { cout << "NO\n" << (i+1) << " " << "1\n"; return 0; } } cout << "YES\n"; }
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: ACCEPTED
input |
---|
10 20 10 2 1 5 8 3 5 6 ... |
correct output |
---|
NO 9 1 |
user output |
---|
NO 9 1 |
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: ACCEPTED
input |
---|
100000 200000 64780 62469 32706 84268 37795 14893 23995 68041 ... |
correct output |
---|
NO 40590 1 |
user output |
---|
NO 40590 1 |
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: ACCEPTED
input |
---|
100000 200000 51243 54643 90493 3012 62110 9430 5809 45601 ... |
correct output |
---|
NO 48024 1 |
user output |
---|
NO 48024 1 |
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 |