제출 #122204

#제출 시각아이디문제언어결과실행 시간메모리
122204GustavNetwork (BOI15_net)C++14
100 / 100
605 ms45340 KiB
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int, int> pi;
typedef vector<int> vi;
typedef vector<ll> vl;
typedef vector<vl> vvl;
typedef vector<pi> vpi;
typedef vector<vi> vvi;
const int inf = 0x3f3f3f3f;
const ll linf = 123456789012345678;
const ll mod = 998244353;
#pragma GCC optimize("Ofast")
#define all(x) x.begin(), x.end()
#define debug(x) cerr << #x << " = " << x << endl

int n;
vvi conn;
vpi ans;

pi dfs(int node, int par){
    if(conn[node].size() == 1) return {node, -1};
    pi m = {-1, -1};
    for(auto x : conn[node]){
        if(x == par) continue;
        pi r = dfs(x, node);
        if(m.first == -1) m = r;
        else{
            if(m.second != -1 || r.second != -1){
                ans.push_back({m.first, r.first});
                if(m.second == -1) m = {r.second, m.second};
                else m = {m.second, r.second};
            }
            else{
                m.second = r.first;
            }
        }
    }
    return m;
}

int main(){
    cin.sync_with_stdio(false);
    cin.tie(0);
    
    cin >> n;
    conn = vvi(n);
    for(int i = 0; i < n-1; i++){
        int u, v;
        cin >> u >> v;
        u--, v--;
        conn[u].push_back(v);
        conn[v].push_back(u);
    }

    int root = 0;
    while(conn[root].size() == 1) root++;

    pi r = dfs(root, -1);
    if(r.second != -1){
        ans.push_back({r.first, r.second});
    }
    else{
        ans.push_back({root, r.first});
    }

    cout << ans.size() << "\n";
    for(int i = 0; i < ans.size(); i++) cout << ans[i].first+1 << " " << ans[i].second+1 << "\n";
}

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

net.cpp: In function 'int main()':
net.cpp:68:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(int i = 0; i < ans.size(); i++) cout << ans[i].first+1 << " " << ans[i].second+1 << "\n";
                    ~~^~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...