CSES - Datatähti Open 2021 - Results
Submission details
Task:Distances
Sender:ScarletS
Submission time:2021-01-30 19:04:50 +0200
Language:C++17
Status:READY
Result:0
Feedback
groupverdictscore
#10
#20
Test results
testverdicttimegroup
#10.01 s1, 2details
#20.12 s2details

Code

#include <bits/stdc++.h>
#define ll long long
#define sz(x) (int)(x).size()
using namespace std;

int dist[101][101], e[101];
bitset<101> done,col;

void solve()
{
    int n,x,y;
    cin>>n;
    for (int i=1;i<=n;++i)
    {
        for (int j=1;j<=n;++j)
            dist[i][j]=200;
        dist[i][i]=e[i]=0;
        done[i]=col[i]=0;
    }
    for (int i=1;i<n;++i)
    {
        cin>>x>>y;
        dist[x][y]=1;
        dist[y][x]=1;
        ++e[x];
        ++e[y];
    }
    for (int k = 1; k <= n; ++k)
        for (int i = 1; i <= n; ++i)
            for (int j = 1; j <= n; ++j)
                dist[i][j] = min(dist[i][j], dist[i][k] + dist[k][j]);
    for (int i=1;i<=n;++i)
        if (e[i]==1)
            x=i;
    for (int i=1;i<=n;++i)
        if (dist[1][i]&1)
            col[i]=1;
    vector<int> v;
    v.push_back(x);
    bool ok;
    while (1)
    {
        x=v.back();
        done[x]=1;
        ok=1;
        cout<<x<<" ";
        for (int i=1;i<=n&&ok;++i)
            if (dist[x][i]<4&&!done[i]&&col[i])
            {
                ok=0;
                v.push_back(i);
                break;
            }
        for (int i=1;i<=n&&ok;++i)
            if (dist[x][i]==2&&!done[i])
            {
                ok=0;
                v.push_back(i);
                break;
            }
        for (int i=1;i<=n&&ok;++i)
            if (dist[x][i]==3&&!done[i])
            {
                ok=0;
                v.push_back(i);
                break;
            }
        for (int i=1;i<=n&&ok;++i)
            if (dist[x][i]==1&&!done[i])
            {
                ok=0;
                v.push_back(i);
                break;
            }
        if (ok)
            break;
    }
    cout<<"\n";
}

int main()
{
    ios_base::sync_with_stdio(0); cin.tie(0);
    int n;
    cin>>n;
    while (n--)
        solve();
    return 0;
}

Test details

Test 1

Group: 1, 2

Verdict:

input
100
8
5 2
2 3
3 7
...

correct output
1 8 2 5 6 7 3 4 
1 7 2 8 3 6 4 5 
1 4 6 2 7 5 8 3 
1 8 3 2 4 7 6 5 
1 6 4 7 5 2 3 8 
...

user output
7 3 4 2 5 6 8 1 
6 3 5 7 8 1 4 
7 8 3 4 6 1 
7 3 6 5 2 1 4 8 
6 8 3 2 4 1 
...

Test 2

Group: 2

Verdict:

input
100
100
37 59
81 37
44 81
...

correct output
1 99 82 81 59 5 71 55 17 24 13...

user output
92 94 97 54 61 6 34 70 56 2 63...