Submission #109018

#TimeUsernameProblemLanguageResultExecution timeMemory
109018thebesSenior Postmen (BOI14_postmen)C++14
38 / 100
1089 ms42360 KiB
#include <bits/stdc++.h>
using namespace std;

const int MN = 5e5+5;
set<int> adj[MN];
int n, m, i, x, y, f, rt, st[MN];
stack<int> s;

void dfs(int n,int p){
    st[n]=1; s.push(n);
    for(auto v : adj[n]){
        if(v==p) continue;
        if(v==rt){
            adj[n].erase(rt);
            adj[rt].erase(n);
            int lst = n;
            printf("%d ",n);
            while(s.size()>1){
                s.pop();
                int cur = s.top();
                printf("%d ",cur);
                adj[cur].erase(lst);
                adj[lst].erase(cur);
                lst = cur;
            }
            printf("\n");
            f = 1;
        }
        else if(!st[v]) dfs(v,n);
        if(f) break;
    }
    st[n]=0;
    if(s.size()&&s.top()==n) s.pop();
}

int main(){
    for(scanf("%d%d",&n,&m),i=1;i<=m;i++){
        scanf("%d%d",&x,&y);
        adj[x].insert(y);
        adj[y].insert(x);
    }
    i=1;
    while(i<=n){
        f=0; rt=i; dfs(i,-1);
        if(!f) i++;
    }
    return 0;
}

Compilation message (stderr)

postmen.cpp: In function 'int main()':
postmen.cpp:37:28: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     for(scanf("%d%d",&n,&m),i=1;i<=m;i++){
         ~~~~~~~~~~~~~~~~~~~^~~~
postmen.cpp:38: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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...