888 2022. 01. 25 10:39:57 Halasz Eszter Üzletlánc cpp11 Hibás válasz 4/40 119ms 15988 KiB
#include <iostream>
//#include <fstream>
#include <vector>
#include <deque>
#include <algorithm>

using namespace std;

//ifstream cin("uzletlanc.in");
//ofstream cout("uzletlanc.out");

struct adat
{
    int alep,blep,lat,p;
    bool lep;
    vector<int>sz;
};
vector<adat>x;

deque<int>y;

vector<int>v;
vector<string >meg;

int n,m,a,b,i,p,q,csp,db,dba,dbb;

int has(adat a, adat b)
{
    if(a.blep>b.blep) return 1;
    else return 0;
}
int main()
{
    cin>>n>>m>>a>>b;
    x.resize(n+1);
    for(i=1;i<=m;++i)
    {
        cin>>p>>q;
        x[p].sz.push_back(q);
        x[q].sz.push_back(p);
    }

    y.push_back(a);
    x[a].lat=1;
    while(!y.empty())
    {
        csp=y.front();
        y.pop_front();
        for(auto e:x[csp].sz)
        {
            if(x[e].lat==0)
            {
                x[e].lat=1;
                x[e].alep=x[csp].alep+1;
                y.push_back(e);
            }
            else x[e].alep=min(x[e].alep,x[csp].alep+1);
        }
    }

    for(i=1;i<=n;++i)
    {
        x[i].lat=0;
        x[i].p=i;
    }

    y.push_back(b);
    x[b].lat=1;
    while(!y.empty())
    {
        csp=y.front();
        y.pop_front();
        for(auto e:x[csp].sz)
        {
            if(x[e].lat==0)
            {
                x[e].lat=1;
                x[e].blep=x[csp].blep+1;
                y.push_back(e);
            }
            else x[e].blep=min(x[e].blep,x[csp].blep+1);
        }
    }

   x[b].alep=0;
    x[a].blep=0;
    //for(i=1;i<=n;++i)
      //  cout<<i<<": "<<x[i].alep<<" "<<x[i].blep<<"\n";

    v.resize(n+1);
    for(i=1;i<=n;++i)
        v[i]=x[i].alep;

         meg.resize(n+1);
    meg[a]='A';
    meg[b]='B';
    dba=n/2-1;
    dbb=dba;


   sort(x.begin()+1,x.end(),has);

    for(i=1;i<=n;++i)
    {
        if(x[i].p!=a && x[i].p!=b)
        {
            if(x[i].blep>v[x[i].p] && dba!=0)
            {
                meg[x[i].p]='A';
                db+=v[x[i].p];
                dba--;
            }
            else
            {
                meg[x[i].p]='B';
                db+=x[i].blep;
                dbb--;
            }
        }
    }
    cout<<db<<"\n";

    for(i=1;i<=n;++i) cout<<meg[i];



    return 0;
}
Részfeladat Összpont Teszt Verdikt Idő Memória
base 4/40
1 Elfogadva 0/0 2ms 1872 KiB
2 Hibás válasz 0/0 2ms 1920 KiB
3 Elfogadva 2/2 1ms 1968 KiB
4 Elfogadva 2/2 1ms 1972 KiB
5 Hibás válasz 0/3 1ms 1976 KiB
6 Hibás válasz 0/3 1ms 1992 KiB
7 Hibás válasz 0/2 1ms 1992 KiB
8 Hibás válasz 0/2 1ms 2004 KiB
9 Hibás válasz 0/3 1ms 2008 KiB
10 Hibás válasz 0/3 1ms 2012 KiB
11 Hibás válasz 0/2 9ms 3072 KiB
12 Hibás válasz 0/2 12ms 3416 KiB
13 Hibás válasz 0/3 54ms 5888 KiB
14 Hibás válasz 0/3 8ms 3948 KiB
15 Hibás válasz 0/2 107ms 13028 KiB
16 Hibás válasz 0/2 118ms 14244 KiB
17 Hibás válasz 0/3 111ms 14048 KiB
18 Hibás válasz 0/3 119ms 15988 KiB