Submission #107741

# Submission time Handle Problem Language Result Execution time Memory
107741 2019-04-25T15:21:31 Z patrikpavic2 Senior Postmen (BOI14_postmen) C++17
55 / 100
500 ms 40952 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];
int tura[N], st[N], tr,ss;

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;
        }

    }
}

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(){
    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:43: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:44:19: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         if(ind[x] == v[x].size()) cur--, tura[tr++] = x;
            ~~~~~~~^~~~~~~~~~~~~~
postmen.cpp:45:21: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         for(;ind[x] < v[x].size();ind[x]++){
              ~~~~~~~^~~~~~~~~~~~~
postmen.cpp: In function 'int main()':
postmen.cpp:75: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:77: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 16 ms 14080 KB Output is correct
2 Correct 14 ms 14080 KB Output is correct
3 Correct 13 ms 14080 KB Output is correct
4 Correct 17 ms 14208 KB Output is correct
5 Correct 13 ms 14144 KB Output is correct
6 Correct 20 ms 14184 KB Output is correct
7 Correct 21 ms 14720 KB Output is correct
8 Correct 14 ms 14148 KB Output is correct
9 Correct 50 ms 17120 KB Output is correct
10 Correct 18 ms 14208 KB Output is correct
11 Correct 15 ms 14208 KB Output is correct
12 Correct 56 ms 17528 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 15 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 15 ms 14208 KB Output is correct
5 Correct 15 ms 14144 KB Output is correct
6 Correct 15 ms 14256 KB Output is correct
7 Correct 21 ms 14712 KB Output is correct
8 Correct 14 ms 14208 KB Output is correct
9 Correct 51 ms 17144 KB Output is correct
10 Correct 14 ms 14208 KB Output is correct
11 Correct 15 ms 14132 KB Output is correct
12 Correct 56 ms 17508 KB Output is correct
13 Correct 103 ms 19364 KB Output is correct
14 Correct 95 ms 18612 KB Output is correct
15 Correct 101 ms 18156 KB Output is correct
16 Correct 100 ms 19296 KB Output is correct
17 Correct 96 ms 18040 KB Output is correct
18 Correct 92 ms 18528 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 13 ms 14080 KB Output is correct
2 Correct 13 ms 14080 KB Output is correct
3 Correct 12 ms 14080 KB Output is correct
4 Correct 15 ms 14208 KB Output is correct
5 Correct 14 ms 14132 KB Output is correct
6 Correct 15 ms 14208 KB Output is correct
7 Correct 19 ms 14660 KB Output is correct
8 Correct 15 ms 14128 KB Output is correct
9 Correct 50 ms 17120 KB Output is correct
10 Correct 14 ms 14208 KB Output is correct
11 Correct 13 ms 14208 KB Output is correct
12 Correct 71 ms 17552 KB Output is correct
13 Correct 93 ms 19388 KB Output is correct
14 Correct 96 ms 18528 KB Output is correct
15 Correct 113 ms 18232 KB Output is correct
16 Correct 92 ms 19372 KB Output is correct
17 Correct 95 ms 18040 KB Output is correct
18 Correct 96 ms 18564 KB Output is correct
19 Execution timed out 551 ms 40952 KB Time limit exceeded
20 Halted 0 ms 0 KB -