제출 #1329441

#제출 시각아이디문제언어결과실행 시간메모리
1329441liptonekMake them Meet (EGOI24_makethemmeet)C++20
5.41 / 100
23 ms1908 KiB
#include <bits/stdc++.h>
using namespace std;

struct Swap
{
    int u,v;
};

int n,m;

bool visited[105];
int parent[105];

vector<int> adj[105];
vector<int> order;

void bfs(int start)
{
    queue<int> q;

    q.push(start);

    visited[start]=true;
    parent[start]=-1;

    while(!q.empty())
    {
        int u=q.front();
        q.pop();

        order.push_back(u);

        for(int v : adj[u])
        {
            if(!visited[v])
            {
                visited[v]=true;
                parent[v]=u;

                q.push(v);
            }
        }
    }
}

int main()
{
    ios_base::sync_with_stdio(0);
    cin.tie(0);

    cin>>n>>m;

    for(int i=0; i<m; i++)
    {
        int u,v;
        cin>>u>>v;

        adj[u].push_back(v);
        adj[v].push_back(u);
    }

    bfs(0);

    vector<Swap> plan;

    for(int i=1; i<(int)order.size(); i++)
    {
        int curr=order[i];

        while(curr!=0 && curr!=-1)
        {
            plan.push_back({curr,parent[curr]});

            curr=parent[curr];
        }
    }

    cout<<plan.size()<<endl;

    for(auto const& m : plan)
    {
        vector<int> colors(n);

        colors[m.u]=0;
        colors[m.v]=0;

        int next=1;

        for(int i=0; i<n; i++)
        {
            if(i!=m.u && i!=m.v)
            {
                colors[i]=next++;
            }
        }

        for(int i=0; i<n; i++)
        {
            cout<<colors[i]<<(i==n-1 ? "" : " ");
        }

        cout<<endl;
    }

    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...