Submission #31532

# Submission time Handle Problem Language Result Execution time Memory
31532 2017-08-29T07:35:30 Z ngkan146 Senior Postmen (BOI14_postmen) C++11
55 / 100
500 ms 53740 KB
#include <bits/stdc++.h>
using namespace std;
struct edge{
    int v=0, id=0;
    edge(int v=0,int id=0):id(id),v(v){}
};
int ctrl[500005];
vector <edge> G[500005];
bool visited[500005];
int n,m;
vector <int> euler;
int q[1000005], qsize;
void dfs(){
    q[qsize++] = 1;
    while(qsize){
        int u = q[qsize-1];
        bool mjk = 0;

        for(;ctrl[u]<G[u].size();++ctrl[u]){
            int v = G[u][ctrl[u]].v;
            int id = G[u][ctrl[u]].id;
            if (visited[id]) continue;
            mjk = 1;
            visited[id] = 1;
            q[qsize]++;
            break;
        }

        if(mjk) continue;

        euler.push_back(u);
        --qsize;
    }
}
void dfs(int u){
    for(;ctrl[u]<G[u].size();++ctrl[u]){
        int v = G[u][ctrl[u]].v;
        int id = G[u][ctrl[u]].id;
        if (visited[id]) continue;
        visited[id] = 1;
        dfs(v);
    }
    euler.push_back(u);
}
int st[500005], stsize;
bool used[500005];
int main(){
    scanf("%d %d",&n,&m);
    for(int i=1;i<=m;++i){
        int x,y;
        scanf("%d %d",&x,&y);
        G[x].push_back(edge(y,i));
        G[y].push_back(edge(x,i));
    }

    dfs(1);

    for(int i=0;i<euler.size();++i){
        if (used[euler[i]]){
            while(st[stsize-1] != euler[i]){
                printf("%d ",st[stsize-1]);
                used[st[stsize-1]] = 0;
                --stsize;
            };
            printf("%d\n",euler[i]);
        }
        else{
            st[stsize++] = euler[i];
            used[euler[i]] = 1;
        }
    }
}

Compilation message

postmen.cpp: In constructor 'edge::edge(int, int)':
postmen.cpp:4:17: warning: 'edge::id' will be initialized after [-Wreorder]
     int v=0, id=0;
                 ^
postmen.cpp:4:11: warning:   'int edge::v' [-Wreorder]
     int v=0, id=0;
           ^
postmen.cpp:5:5: warning:   when initialized here [-Wreorder]
     edge(int v=0,int id=0):id(id),v(v){}
     ^~~~
postmen.cpp: In function 'void dfs()':
postmen.cpp:19:21: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         for(;ctrl[u]<G[u].size();++ctrl[u]){
              ~~~~~~~^~~~~~~~~~~~
postmen.cpp:20:17: warning: unused variable 'v' [-Wunused-variable]
             int v = G[u][ctrl[u]].v;
                 ^
postmen.cpp: In function 'void dfs(int)':
postmen.cpp:36:17: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(;ctrl[u]<G[u].size();++ctrl[u]){
          ~~~~~~~^~~~~~~~~~~~
postmen.cpp: In function 'int main()':
postmen.cpp:58:18: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(int i=0;i<euler.size();++i){
                 ~^~~~~~~~~~~~~
postmen.cpp:48: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:51:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         scanf("%d %d",&x,&y);
         ~~~~~^~~~~~~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 11 ms 12032 KB Output is correct
2 Correct 14 ms 12032 KB Output is correct
3 Correct 13 ms 12136 KB Output is correct
4 Correct 14 ms 12288 KB Output is correct
5 Correct 15 ms 12160 KB Output is correct
6 Correct 15 ms 12392 KB Output is correct
7 Correct 20 ms 13184 KB Output is correct
8 Correct 15 ms 12288 KB Output is correct
9 Correct 56 ms 18172 KB Output is correct
10 Correct 13 ms 12288 KB Output is correct
11 Correct 15 ms 12288 KB Output is correct
12 Correct 60 ms 18548 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 11 ms 12032 KB Output is correct
2 Correct 16 ms 12032 KB Output is correct
3 Correct 11 ms 12084 KB Output is correct
4 Correct 13 ms 12288 KB Output is correct
5 Correct 13 ms 12160 KB Output is correct
6 Correct 13 ms 12416 KB Output is correct
7 Correct 22 ms 13160 KB Output is correct
8 Correct 14 ms 12288 KB Output is correct
9 Correct 58 ms 18176 KB Output is correct
10 Correct 17 ms 12288 KB Output is correct
11 Correct 15 ms 12288 KB Output is correct
12 Correct 61 ms 18548 KB Output is correct
13 Correct 104 ms 20468 KB Output is correct
14 Correct 98 ms 18292 KB Output is correct
15 Correct 89 ms 19688 KB Output is correct
16 Correct 91 ms 20444 KB Output is correct
17 Correct 105 ms 16756 KB Output is correct
18 Correct 99 ms 18920 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 12 ms 12032 KB Output is correct
2 Correct 13 ms 12084 KB Output is correct
3 Correct 16 ms 12032 KB Output is correct
4 Correct 13 ms 12340 KB Output is correct
5 Correct 11 ms 12160 KB Output is correct
6 Correct 16 ms 12416 KB Output is correct
7 Correct 20 ms 13184 KB Output is correct
8 Correct 13 ms 12312 KB Output is correct
9 Correct 65 ms 18172 KB Output is correct
10 Correct 16 ms 12288 KB Output is correct
11 Correct 18 ms 12288 KB Output is correct
12 Correct 72 ms 18572 KB Output is correct
13 Correct 98 ms 20448 KB Output is correct
14 Correct 99 ms 18292 KB Output is correct
15 Correct 75 ms 19668 KB Output is correct
16 Correct 104 ms 20536 KB Output is correct
17 Correct 110 ms 16804 KB Output is correct
18 Correct 126 ms 18980 KB Output is correct
19 Execution timed out 560 ms 53740 KB Time limit exceeded
20 Halted 0 ms 0 KB -