Cod sursa(job #2129820)

Utilizator sergiudnyTritean Sergiu sergiudny Data 13 februarie 2018 09:51:57
Problema A+B Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.12 kb
#include <bits/stdc++.h>
#define DM 502
#define pb push_back
using namespace std;
ifstream fin("psychtraining.in");
ofstream fout("psychtraining.out");

int conn,n,k,a,b;
vector<int>v[DM];
struct juc{ int leg,ind; } nod[DM];
bitset<DM>team;

bool cmp(juc a,juc b){
    return (a.leg>b.leg);
}

void afis(){
    for(int i=1;i<=n;++i)
        fout<<(team[i]?'b':'a');
    fout<<'\n';
}

int main()
{
    fin>>n>>k;
    for(int i=1;i<=k;++i){
        fin>>a>>b;
        v[a].pb(b),v[b].pb(a);
        conn+=2;
        nod[a].ind=a,nod[b].ind=b;
        nod[a].leg++,nod[b].leg++;
    }
    while(conn){
        sort(nod+1,nod+n+1,cmp);
        team.reset();
        for(int i=1;i<=n/2;++i) team[nod[i].ind]=1;
        for(int i=1;i<=n/2;++i){
            for(int i=0;i<v[nod[i].ind].size();++i)
                if(!team[ v[nod[i].ind][i] ]){
                    swap(v[nod[i].ind][i],v[nod[i].ind].back()),v[nod[i].ind].pop_back();
                    swap(v[i][nod[i].ind],v[i].back()),v[i].pop_back();
                    conn-=2;
                }
        }
        afis();
    }
    return 0;
}