제출 #227534

#제출 시각아이디문제언어결과실행 시간메모리
227534Shafin666Senior Postmen (BOI14_postmen)C++14
55 / 100
603 ms44916 KiB
#include <bits/stdc++.h>
#define pb push_back
#define pii pair<ll, ll>
#define nyan "(=^・ω・^=)"
#define read_input         freopen("in.txt","r", stdin)
#define print_output       freopen("out.txt","w", stdout)
typedef long long ll;
typedef long double ld;
using namespace std;

const int maxn = 5e5+10;
vector<int> adj[maxn], euler;
int del[maxn], l[maxn], r[maxn];
int pre[maxn], curr[maxn];

int main() 
{
    int n, m;
    scanf("%d %d", &n, &m);

    for(int i = 1; i <= m; i++) {
        scanf("%d %d", &l[i], &r[i]);

        adj[l[i]].pb(i);
        adj[r[i]].pb(i);
    }
    for(int i = 1; i <= n; i++) adj[i].pb(0);

    stack<int> s;

    s.push(1) ;
    while(!s.empty()) {
        int u = s.top();
        s.pop();

        while(curr[u] < (int) adj[u].size() - 1) {
            while(del[adj[u][curr[u]]]) curr[u]++;
            int e = adj[u][curr[u]++];
            if(e == 0) break;

            s.push(u);

            u = l[e] ^ r[e] ^ u;
            del[e] = 1;
        }
        euler.pb(u);
    }

    memset(pre, -1, sizeof pre);

    int j = 0;
    while(j < (int) euler.size()) {
        s.push(euler[j]);

        if(pre[euler[j]] != -1) {
            s.pop();

            while(1) {
                int here = s.top();
                printf("%d ", here);
                
                if(pre[here] == pre[euler[j]]) break;
                pre[here] = -1;
                s.pop();
            }
            printf("\n");
        }
        else pre[euler[j]] = j;
        j++;
    }
    return 0;   
}

컴파일 시 표준 에러 (stderr) 메시지

postmen.cpp: In function 'int main()':
postmen.cpp:19: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:22:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         scanf("%d %d", &l[i], &r[i]);
         ~~~~~^~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...