Submission #672874

#TimeUsernameProblemLanguageResultExecution timeMemory
672874iosif_andrei_Network (BOI15_net)C++14
0 / 100
8 ms11988 KiB
#include <bits/stdc++.h> 
using namespace std;

int n, h[500001];
vector <int> g[500001];

void dfs(int nod, int lvl)
{
    h[nod] = lvl;

    for (auto& i : g[nod])
        if (!h[i])
            dfs(i, lvl + 1);
}

struct nod {
    int key;

    bool operator < (nod aux)
    {
        return h[key] < h[aux.key];
    }
};

vector <nod> v;

int main() {
    
    cin >> n;

    for (int i = 1; i < n; i++)
    {
        int x, y;
        cin >> x >> y;
        g[x].push_back(y);
        g[y].push_back(x);
    }

    int root;

    for (int i = 1; i <= n; i++)
        if (g[i].size() == 1)
        {
            root = i;
            break;
        }

    dfs(root, 1);

    for (int i = 1; i <= n; i++)
        if (g[i].size() == 1)
            v.push_back({ i });

    cout << (v.size() + 1) / 2 << '\n';

    sort(v.begin(), v.end());

    if (v.size() % 2)
    {
        int i = 0, j = v.size() / 2;

        while (i < v.size() / 2)
        {
            cout << v[i].key << ' ' << v[j].key << '\n';
            i++, j++;
        }

        int aux = v.back().key;

        if (g[aux][0] == 1)
            cout << aux << ' ' << 2;
        else
            cout << aux << ' ' << 1;
    }
    else
    {
        int i = 0, j = v.size() / 2;

        while (i < v.size() / 2)
        {
            cout << v[i].key << ' ' << v[j].key << '\n';
            i++, j++;
        }
    }

    return 0;
}

Compilation message (stderr)

net.cpp: In function 'int main()':
net.cpp:62:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<nod>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   62 |         while (i < v.size() / 2)
      |                ~~^~~~~~~~~~~~~~
net.cpp:79:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<nod>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   79 |         while (i < v.size() / 2)
      |                ~~^~~~~~~~~~~~~~
net.cpp:48:8: warning: 'root' may be used uninitialized in this function [-Wmaybe-uninitialized]
   48 |     dfs(root, 1);
      |     ~~~^~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...