Submission #543938

# Submission time Handle Problem Language Result Execution time Memory
543938 2022-03-31T16:24:49 Z Olympia Senior Postmen (BOI14_postmen) C++17
38 / 100
500 ms 16332 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 ("O1")
#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<int> nodes;
    for (int i = 0; i < N; i++) {
        nodes.emplace(i);
        bool upd;
        while (!nodes.empty()) {
            int cur = nodes.top();
            //okay[prev] = false;
            hasVisited[cur] = true;
            upd = false;
            for (pair<int,int> &pr: adj[cur]) {
                int j = pr.first;
                if (!okay[pr.second]) {
                    continue;
                }
                okay[pr.second] = false;
                if (hasVisited[j]) {
                    while (!nodes.empty()) {
                        int &x = nodes.top(); if (x == j) break;
                        hasVisited[x] = false;
                        printf("%d ", x + 1);
                        nodes.pop();
                    }
                    printf("%d\n", j + 1);
                } else {
                    nodes.emplace(j);
                }
                upd = true;
                break;
            }
            if (!upd) {
                nodes.pop();
            }
        }
    }
}

Compilation message

postmen.cpp:16: warning: ignoring '#pragma GCC optimization' [-Wunknown-pragmas]
   16 | #pragma GCC optimization ("O1")
      | 
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 11988 KB Output is correct
4 Correct 10 ms 12072 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 12628 KB Output is correct
8 Correct 9 ms 12108 KB Output is correct
9 Correct 55 ms 14504 KB Output is correct
10 Correct 8 ms 12056 KB Output is correct
11 Correct 7 ms 12116 KB Output is correct
12 Correct 44 ms 14788 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 7 ms 11988 KB Output is correct
2 Correct 8 ms 12024 KB Output is correct
3 Correct 8 ms 12116 KB Output is correct
4 Correct 8 ms 12116 KB Output is correct
5 Correct 6 ms 12116 KB Output is correct
6 Correct 8 ms 12124 KB Output is correct
7 Correct 12 ms 12516 KB Output is correct
8 Correct 7 ms 12116 KB Output is correct
9 Correct 57 ms 14536 KB Output is correct
10 Correct 8 ms 12116 KB Output is correct
11 Correct 8 ms 12120 KB Output is correct
12 Correct 44 ms 14852 KB Output is correct
13 Correct 56 ms 16332 KB Output is correct
14 Correct 53 ms 15560 KB Output is correct
15 Execution timed out 744 ms 15380 KB Time limit exceeded
16 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 7 ms 12012 KB Output is correct
2 Correct 6 ms 11988 KB Output is correct
3 Correct 7 ms 12080 KB Output is correct
4 Correct 8 ms 12116 KB Output is correct
5 Correct 9 ms 12068 KB Output is correct
6 Correct 8 ms 12116 KB Output is correct
7 Correct 12 ms 12628 KB Output is correct
8 Correct 9 ms 12116 KB Output is correct
9 Correct 56 ms 14496 KB Output is correct
10 Correct 8 ms 12116 KB Output is correct
11 Correct 8 ms 12116 KB Output is correct
12 Correct 43 ms 14736 KB Output is correct
13 Correct 63 ms 16308 KB Output is correct
14 Correct 64 ms 15576 KB Output is correct
15 Execution timed out 728 ms 15212 KB Time limit exceeded
16 Halted 0 ms 0 KB -