Submission #543925

# Submission time Handle Problem Language Result Execution time Memory
543925 2022-03-31T15:40:31 Z Olympia Senior Postmen (BOI14_postmen) C++
38 / 100
500 ms 16728 KB
#include <vector>
#include <algorithm>
#include <iostream>
#include <set>
#include <cmath>
#include <map>
#include <random>
#include <cassert>
#include <ctime>
#include <stack>
#include <cstdlib>
#include <queue>
#include <cstdio>
#include <limits.h>
#pragma GCC target ("avx2")
#pragma GCC optimization ("O3")
#pragma GCC optimization ("unroll-loops")
 
using namespace std;
 
vector<pair<int,int>> adj[(int)5e5];
bool hasVisited[(int)5e5];
bool okay[(int)5e5];
 
int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    int N, M;
    scanf("%d%d", &N, &M);
    for (int i = 0; i < M; i++) {
        int u, v;
        scanf("%d%d", &u, &v);
        u--, v--;
        adj[u].emplace_back(v, i), adj[v].emplace_back(u, i);
    }
    for (int i = 0; i < M; i++) {
        okay[i] = true;
    }
    stack<pair<int,int>> nodes;
    for (int i = 0; i < N; i++) {
        nodes.emplace(i, -1);
        while (!nodes.empty()) {
            int cur = nodes.top().first;
            okay[nodes.top().second] = false;
            hasVisited[cur] = true;
            bool upd = false;
            for (pair<int,int> &pr: adj[cur]) {
                int j = pr.first;
                if (pr.second == nodes.top().second || !okay[pr.second]) {
                    continue;
                }
                okay[pr.second] = false;
                if (hasVisited[j]) {
                    while (!nodes.empty() && nodes.top().first != j) {
                        hasVisited[nodes.top().first] = false;
                        printf("%d ", nodes.top().first + 1);
                        nodes.pop();
                    }
                    printf("%d\n", j + 1);
                } else {
                    nodes.emplace(j, pr.second);
                }
                upd = true;
                break;
            }
            if (!upd) {
                nodes.pop();
            }
        }
    }
}

Compilation message

postmen.cpp:16: warning: ignoring '#pragma GCC optimization' [-Wunknown-pragmas]
   16 | #pragma GCC optimization ("O3")
      | 
postmen.cpp:17: warning: ignoring '#pragma GCC optimization' [-Wunknown-pragmas]
   17 | #pragma GCC optimization ("unroll-loops")
      | 
postmen.cpp: In function 'int main()':
postmen.cpp:29:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   29 |     scanf("%d%d", &N, &M);
      |     ~~~~~^~~~~~~~~~~~~~~~
postmen.cpp:32:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   32 |         scanf("%d%d", &u, &v);
      |         ~~~~~^~~~~~~~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 6 ms 11988 KB Output is correct
2 Correct 6 ms 11988 KB Output is correct
3 Correct 6 ms 11960 KB Output is correct
4 Correct 7 ms 12116 KB Output is correct
5 Correct 6 ms 12124 KB Output is correct
6 Correct 8 ms 12116 KB Output is correct
7 Correct 11 ms 12628 KB Output is correct
8 Correct 7 ms 12116 KB Output is correct
9 Correct 62 ms 14524 KB Output is correct
10 Correct 7 ms 12160 KB Output is correct
11 Correct 8 ms 12088 KB Output is correct
12 Correct 43 ms 14796 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 6 ms 12040 KB Output is correct
2 Correct 6 ms 11988 KB Output is correct
3 Correct 6 ms 12044 KB Output is correct
4 Correct 8 ms 12116 KB Output is correct
5 Correct 7 ms 12116 KB Output is correct
6 Correct 8 ms 12120 KB Output is correct
7 Correct 12 ms 12620 KB Output is correct
8 Correct 7 ms 12116 KB Output is correct
9 Correct 61 ms 14480 KB Output is correct
10 Correct 8 ms 12116 KB Output is correct
11 Correct 8 ms 12140 KB Output is correct
12 Correct 42 ms 14824 KB Output is correct
13 Correct 56 ms 16716 KB Output is correct
14 Correct 52 ms 15636 KB Output is correct
15 Execution timed out 777 ms 15320 KB Time limit exceeded
16 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 6 ms 11988 KB Output is correct
2 Correct 7 ms 12016 KB Output is correct
3 Correct 6 ms 11988 KB Output is correct
4 Correct 8 ms 12116 KB Output is correct
5 Correct 7 ms 12116 KB Output is correct
6 Correct 8 ms 12116 KB Output is correct
7 Correct 12 ms 12636 KB Output is correct
8 Correct 7 ms 12116 KB Output is correct
9 Correct 56 ms 14468 KB Output is correct
10 Correct 8 ms 12120 KB Output is correct
11 Correct 7 ms 12116 KB Output is correct
12 Correct 49 ms 14764 KB Output is correct
13 Correct 54 ms 16728 KB Output is correct
14 Correct 55 ms 15696 KB Output is correct
15 Execution timed out 788 ms 15400 KB Time limit exceeded
16 Halted 0 ms 0 KB -