7423 2024. 01. 08 19:53:08 horvathabel Üzletlánc cpp17 Elfogadva 40/40 82ms 13604 KiB
#include <bits/stdc++.h>
using namespace std;
vector<int>g[40001];
vector<int> tava(40001,0);
vector<int> tavb(40001,0);
void bfsa(int x, int n){
    queue<int>q;
    vector<bool> seen;
    seen.resize(n+1,0);
    q.push(x);
    seen[x]=true;
    tava[x]=0;
    while(!q.empty()){
        int v=q.front();
        q.pop();
        for (int edge:g[v]){
            if (!seen[edge]){
                tava[edge]=tava[v]+1;
                seen[edge]=true;
                q.push(edge);
            }
        }
    }
}
void bfsb(int x, int n){
    tavb[x]=0;
    queue<int>q;
    vector<bool> seen;
    seen.resize(n+1,0);
    q.push(x);
    seen[x]=true;

    while(!q.empty()){
        int v=q.front();
        q.pop();
        for (int edge:g[v]){
            if (!seen[edge]){
                tavb[edge]=tavb[v]+1;
                seen[edge]=true;
                q.push(edge);
            }
        }
    }
}
int main()
{
    int n,m,a,b;
    cin>>n>>m>>a>>b;
    for (int i=0; i<m;i++){
        int x,y;
        cin>>x>>y;
        g[x].push_back(y);
        g[y].push_back(x);
    }
    bfsa(a,n);
    bfsb(b,n);
    vector<pair<int,int>> diff;
    int ans=0;
    vector<string> answer;
    answer.resize(n+1,"A");
    diff.resize(n+1,{1000000000,0});
    for (int i=1; i<=n;i++){
        diff[i]={tavb[i]-tava[i],i};
        ans+=tava[i];
    }
    sort(diff.begin(),diff.end());
    for (int i=0; i<n/2;i++){
        ans+=diff[i].first;
        answer[diff[i].second]="B";
    }
    cout<<ans<<endl;
    for (int i=1; i<=n;i++) cout<<answer[i];


}
Részfeladat Összpont Teszt Verdikt Idő Memória
base 40/40
1 Elfogadva 0/0 4ms 4260 KiB
2 Elfogadva 0/0 4ms 4512 KiB
3 Elfogadva 2/2 4ms 4752 KiB
4 Elfogadva 2/2 4ms 4916 KiB
5 Elfogadva 3/3 4ms 5404 KiB
6 Elfogadva 3/3 4ms 5196 KiB
7 Elfogadva 2/2 4ms 5196 KiB
8 Elfogadva 2/2 4ms 5436 KiB
9 Elfogadva 3/3 4ms 5820 KiB
10 Elfogadva 3/3 4ms 6040 KiB
11 Elfogadva 2/2 8ms 6664 KiB
12 Elfogadva 2/2 12ms 7244 KiB
13 Elfogadva 3/3 57ms 9092 KiB
14 Elfogadva 3/3 8ms 7284 KiB
15 Elfogadva 2/2 65ms 12808 KiB
16 Elfogadva 2/2 75ms 12996 KiB
17 Elfogadva 3/3 48ms 12608 KiB
18 Elfogadva 3/3 82ms 13604 KiB