Submission #11147

# Submission time Handle Problem Language Result Execution time Memory
11147 2014-11-15T02:37:02 Z tncks0121 Senior Postmen (BOI14_postmen) C++14
55 / 100
500 ms 101224 KB
//
//  main.cpp
//  BOI14_postmen
//
//  Created by 박수찬 on 14. 11. 14..
//  Copyright (c) 2014년 박수찬. All rights reserved.
//

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <memory.h>
#include <math.h>
#include <assert.h>
#include <stack>
#include <queue>
#include <map>
#include <set>
#include <algorithm>
#include <string>
#include <functional>
#include <vector>
#include <numeric>
#include <deque>
#include <utility>
#include <bitset>
#include <limits.h>
#include <list>
#include <iostream>

using namespace std;
typedef long long ll;
typedef unsigned long long llu;
typedef double lf;
typedef unsigned int uint;
typedef long double llf;
typedef pair<int, int> pii;

const int N_ = 500050, M_ = 500050;

int N, M;
list<int> gph[N_];
list<int> edge[N_];
bool passed[M_];
bool visited[N_];
typedef list<int>::iterator  lit;
lit processed[N_][2];
bool first[N_];

int main() {
    scanf("%d%d", &N, &M);
    for(int i = 1; i <= M; i++) {
        int u, v; scanf("%d%d", &u, &v);
        gph[u].push_back(v);
        gph[v].push_back(u);
        edge[u].push_back(i);
        edge[v].push_back(i);
    }
    
    for(int u = 1; u <= N; u++) {
        stack<int> stk; stk.push(u);
        
        while(!stk.empty()) {
            int cur = stk.top();
            visited[cur] = true;
            
            bool updated = false;
            auto &it = processed[cur][0];
            auto &it2 = processed[cur][1];
            if(!first[cur]) {
                first[cur] = true;
                it = gph[cur].begin();
                it2= edge[cur].begin();
            }
            for(; it != gph[cur].end(); it++, it2++) {
                int nxt = *it;
                int e = *it2; if(passed[e]) continue;
                passed[e] = true;
                if(visited[nxt]) {
                    while(!stk.empty() && stk.top() != nxt) {
                        int vt = stk.top(); stk.pop();
                        visited[vt] = false;
                        printf("%d ", vt);
                    }
                    printf("%d\n", nxt);
                } else {
                    stk.push(nxt);
                }
                updated = true;
                break;
            }
            /*
            processed[cur][0] = it;
            processed[cur][1] = it2;*/
            if(!updated && !stk.empty()) stk.pop();
        }
    }
    
    
    return 0;
}

Compilation message

postmen.cpp: In function 'int main()':
postmen.cpp:51: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:53:24: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         int u, v; scanf("%d%d", &u, &v);
                   ~~~~~^~~~~~~~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 26 ms 31608 KB Output is correct
2 Correct 29 ms 31592 KB Output is correct
3 Correct 28 ms 31620 KB Output is correct
4 Correct 24 ms 32000 KB Output is correct
5 Correct 23 ms 31744 KB Output is correct
6 Correct 36 ms 32256 KB Output is correct
7 Correct 39 ms 33608 KB Output is correct
8 Correct 31 ms 31864 KB Output is correct
9 Correct 138 ms 44624 KB Output is correct
10 Correct 26 ms 32104 KB Output is correct
11 Correct 29 ms 31992 KB Output is correct
12 Correct 134 ms 44664 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 29 ms 31592 KB Output is correct
2 Correct 29 ms 31728 KB Output is correct
3 Correct 26 ms 31576 KB Output is correct
4 Correct 33 ms 32000 KB Output is correct
5 Correct 30 ms 31760 KB Output is correct
6 Correct 36 ms 32232 KB Output is correct
7 Correct 47 ms 33520 KB Output is correct
8 Correct 25 ms 32000 KB Output is correct
9 Correct 169 ms 44664 KB Output is correct
10 Correct 26 ms 32032 KB Output is correct
11 Correct 28 ms 31976 KB Output is correct
12 Correct 148 ms 44844 KB Output is correct
13 Correct 192 ms 45404 KB Output is correct
14 Correct 182 ms 45192 KB Output is correct
15 Correct 193 ms 44908 KB Output is correct
16 Correct 212 ms 45560 KB Output is correct
17 Correct 203 ms 45008 KB Output is correct
18 Correct 217 ms 45200 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 30 ms 31684 KB Output is correct
2 Correct 27 ms 31608 KB Output is correct
3 Correct 22 ms 31664 KB Output is correct
4 Correct 25 ms 32028 KB Output is correct
5 Correct 27 ms 31744 KB Output is correct
6 Correct 25 ms 32256 KB Output is correct
7 Correct 38 ms 33528 KB Output is correct
8 Correct 33 ms 31976 KB Output is correct
9 Correct 137 ms 44664 KB Output is correct
10 Correct 30 ms 32120 KB Output is correct
11 Correct 25 ms 32000 KB Output is correct
12 Correct 142 ms 44664 KB Output is correct
13 Correct 190 ms 45540 KB Output is correct
14 Correct 167 ms 45012 KB Output is correct
15 Correct 178 ms 44872 KB Output is correct
16 Correct 196 ms 45480 KB Output is correct
17 Correct 206 ms 45004 KB Output is correct
18 Correct 211 ms 45248 KB Output is correct
19 Execution timed out 1036 ms 101224 KB Time limit exceeded
20 Halted 0 ms 0 KB -