Submission #107748

# Submission time Handle Problem Language Result Execution time Memory
107748 2019-04-25T15:40:48 Z patrikpavic2 Senior Postmen (BOI14_postmen) C++17
100 / 100
439 ms 40964 KB
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <vector>

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

using namespace std;

typedef pair < int, int > pii;
typedef vector < int > vi;

const int N = 5e5 + 5;

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

inline bool is( const char &c ) { return c >= '0' && c <= '9'; }

inline int read_int( ) {
    int num;
    char c;
    while( !is( c = getchar_unlocked( ) ) );
    num = c - '0';
    while( is( c = getchar_unlocked( ) ) ) num = num * 10 + c - '0';
    return num;
}

inline 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[tr++] = 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;
        }

    }
}

inline void rastavi(){
    memset(bio, 0, sizeof(bio));
    for(int i = 0;i < tr;++i){
        if(bio[tura[i]]){
            while(st[ss - 1] != tura[i]){
                printf("%d ", st[ss - 1]);
                bio[st[ss - 1]]--;
                --ss;
            }
            --ss;
            --bio[tura[i]];
            printf("%d\n", tura[i]);
        }
        st[ss++] = tura[i];
        ++bio[tura[i]];
    }
}

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

Compilation message

postmen.cpp: In function 'void euler()':
postmen.cpp:36: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:37:19: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         if(ind[x] == v[x].size()) --cur, tura[tr++] = x;
            ~~~~~~~^~~~~~~~~~~~~~
postmen.cpp:38:21: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         for(;ind[x] < v[x].size();++ind[x]){
              ~~~~~~~^~~~~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 12 ms 14080 KB Output is correct
2 Correct 15 ms 14132 KB Output is correct
3 Correct 17 ms 14080 KB Output is correct
4 Correct 18 ms 14208 KB Output is correct
5 Correct 12 ms 14080 KB Output is correct
6 Correct 14 ms 14208 KB Output is correct
7 Correct 15 ms 14592 KB Output is correct
8 Correct 13 ms 14208 KB Output is correct
9 Correct 32 ms 17280 KB Output is correct
10 Correct 13 ms 14208 KB Output is correct
11 Correct 13 ms 14208 KB Output is correct
12 Correct 35 ms 17504 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 15 ms 14080 KB Output is correct
2 Correct 12 ms 14080 KB Output is correct
3 Correct 13 ms 14080 KB Output is correct
4 Correct 15 ms 14208 KB Output is correct
5 Correct 13 ms 14080 KB Output is correct
6 Correct 15 ms 14208 KB Output is correct
7 Correct 15 ms 14592 KB Output is correct
8 Correct 12 ms 14080 KB Output is correct
9 Correct 32 ms 17152 KB Output is correct
10 Correct 13 ms 14208 KB Output is correct
11 Correct 14 ms 14184 KB Output is correct
12 Correct 35 ms 17528 KB Output is correct
13 Correct 58 ms 19320 KB Output is correct
14 Correct 53 ms 18572 KB Output is correct
15 Correct 60 ms 18152 KB Output is correct
16 Correct 69 ms 19452 KB Output is correct
17 Correct 63 ms 18016 KB Output is correct
18 Correct 53 ms 18552 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 14 ms 14080 KB Output is correct
2 Correct 14 ms 14056 KB Output is correct
3 Correct 12 ms 14080 KB Output is correct
4 Correct 14 ms 14208 KB Output is correct
5 Correct 12 ms 14080 KB Output is correct
6 Correct 16 ms 14208 KB Output is correct
7 Correct 15 ms 14720 KB Output is correct
8 Correct 12 ms 14184 KB Output is correct
9 Correct 34 ms 17144 KB Output is correct
10 Correct 13 ms 14208 KB Output is correct
11 Correct 18 ms 14208 KB Output is correct
12 Correct 35 ms 17584 KB Output is correct
13 Correct 70 ms 19320 KB Output is correct
14 Correct 62 ms 18552 KB Output is correct
15 Correct 49 ms 18152 KB Output is correct
16 Correct 62 ms 19320 KB Output is correct
17 Correct 68 ms 18040 KB Output is correct
18 Correct 60 ms 18552 KB Output is correct
19 Correct 423 ms 40832 KB Output is correct
20 Correct 353 ms 37180 KB Output is correct
21 Correct 355 ms 34792 KB Output is correct
22 Correct 439 ms 40964 KB Output is correct
23 Correct 138 ms 28596 KB Output is correct
24 Correct 434 ms 34536 KB Output is correct
25 Correct 396 ms 36984 KB Output is correct