Submission #107739

# Submission time Handle Problem Language Result Execution time Memory
107739 2019-04-25T15:18:59 Z patrikpavic2 Senior Postmen (BOI14_postmen) C++17
55 / 100
500 ms 41072 KB
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <ctime>
#include <algorithm>
#include <stack>
#include <set>
#include <vector>
#include <iostream>
#include <queue>
#include <map>

#define X first
#define Y second
#define PB push_back
#define P push

using namespace std;

typedef long long ll;
typedef long double ld;
typedef pair < int, int > pii;
typedef vector < int > vi;
typedef set < int > si;

const int N = 5e5 + 5;
const int M = 1e6 + 500;
const int INF = 0x3f3f3f3f;
const int MOD = 1e9 + 7;
const int OFF = (1 << 18);
const int LOG = 20;
const double EPS = 1e-9;
const double PI = 3.1415926535;

int bio[N], n, m, nod[N],ind[N], rek[N], cur;
vector < pii > v[N];
vector < int > st;
vi tura;

void euler(){
    rek[cur++] = 1;
    for(;cur;){
        int x = rek[cur - 1];
        for(;ind[x] < v[x].size() && bio[v[x][ind[x]].Y];ind[x]++);
        if(ind[x] == v[x].size()) cur--, tura.PB(x);
        for(;ind[x] < v[x].size();ind[x]++){
            if(bio[v[x][ind[x]].Y]) continue;
            bio[v[x][ind[x]].Y] = 1;
            int nxt = v[x][ind[x]].X;
            rek[cur++] = nxt;
            break;
        }

    }
}

void rastavi(){
    memset(bio, 0, sizeof(bio));
    for(int i = 0;i < tura.size();i++){
        if(bio[tura[i]]){
            while(st.back() != tura[i]){
                printf("%d ", st.back());
                bio[st.back()]--;
                st.pop_back();
            }
            st.pop_back();
            bio[tura[i]]--;
            printf("%d\n", tura[i]);
        }
        st.PB(tura[i]);
        bio[tura[i]]++;
    }
}

int main(){
    scanf("%d%d", &n, &m);
    for(int i = 0;i < m;i++){
        int x, y; scanf("%d%d", &x, &y);
        v[x].PB({y, i});
        v[y].PB({x, i});
    }
    euler();
    rastavi();
    return 0;
}

Compilation message

postmen.cpp: In function 'void euler()':
postmen.cpp:44:21: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         for(;ind[x] < v[x].size() && bio[v[x][ind[x]].Y];ind[x]++);
              ~~~~~~~^~~~~~~~~~~~~
postmen.cpp:45:19: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         if(ind[x] == v[x].size()) cur--, tura.PB(x);
            ~~~~~~~^~~~~~~~~~~~~~
postmen.cpp:46:21: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         for(;ind[x] < v[x].size();ind[x]++){
              ~~~~~~~^~~~~~~~~~~~~
postmen.cpp: In function 'void rastavi()':
postmen.cpp:59:21: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(int i = 0;i < tura.size();i++){
                   ~~^~~~~~~~~~~~~
postmen.cpp: In function 'int main()':
postmen.cpp:76:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d%d", &n, &m);
     ~~~~~^~~~~~~~~~~~~~~~
postmen.cpp:78:24: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         int x, y; scanf("%d%d", &x, &y);
                   ~~~~~^~~~~~~~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 17 ms 14080 KB Output is correct
2 Correct 17 ms 14080 KB Output is correct
3 Correct 12 ms 14080 KB Output is correct
4 Correct 16 ms 14208 KB Output is correct
5 Correct 13 ms 14080 KB Output is correct
6 Correct 14 ms 14208 KB Output is correct
7 Correct 19 ms 14720 KB Output is correct
8 Correct 15 ms 14080 KB Output is correct
9 Correct 80 ms 17324 KB Output is correct
10 Correct 14 ms 14208 KB Output is correct
11 Correct 16 ms 14208 KB Output is correct
12 Correct 65 ms 17636 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 16 ms 14080 KB Output is correct
2 Correct 13 ms 14080 KB Output is correct
3 Correct 13 ms 14080 KB Output is correct
4 Correct 16 ms 14208 KB Output is correct
5 Correct 17 ms 14080 KB Output is correct
6 Correct 16 ms 14208 KB Output is correct
7 Correct 21 ms 14720 KB Output is correct
8 Correct 16 ms 14208 KB Output is correct
9 Correct 58 ms 17252 KB Output is correct
10 Correct 14 ms 14208 KB Output is correct
11 Correct 14 ms 14208 KB Output is correct
12 Correct 63 ms 17628 KB Output is correct
13 Correct 95 ms 19484 KB Output is correct
14 Correct 102 ms 18848 KB Output is correct
15 Correct 92 ms 18688 KB Output is correct
16 Correct 102 ms 19420 KB Output is correct
17 Correct 104 ms 18164 KB Output is correct
18 Correct 95 ms 18676 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 16 ms 14080 KB Output is correct
2 Correct 14 ms 14080 KB Output is correct
3 Correct 15 ms 14080 KB Output is correct
4 Correct 16 ms 14208 KB Output is correct
5 Correct 14 ms 14080 KB Output is correct
6 Correct 14 ms 14208 KB Output is correct
7 Correct 19 ms 14768 KB Output is correct
8 Correct 14 ms 14208 KB Output is correct
9 Correct 53 ms 17276 KB Output is correct
10 Correct 15 ms 14160 KB Output is correct
11 Correct 14 ms 14208 KB Output is correct
12 Correct 59 ms 17652 KB Output is correct
13 Correct 93 ms 19512 KB Output is correct
14 Correct 102 ms 18780 KB Output is correct
15 Correct 96 ms 18668 KB Output is correct
16 Correct 92 ms 19448 KB Output is correct
17 Correct 128 ms 18224 KB Output is correct
18 Correct 103 ms 18652 KB Output is correct
19 Execution timed out 578 ms 41072 KB Time limit exceeded
20 Halted 0 ms 0 KB -