233102026-01-18 20:07:07abcdÜzletlánccpp17Hibás válasz 0/4076ms3892 KiB
#include <bits/stdc++.h>
using namespace std;
using pii=pair<int,int>;

void bfs(vector<vector<int>>& adj, vector<int>& dist, int v){
    queue<int> q;
    q.push(v);
    dist[v]=0;
    while(!q.empty()){
        int v=q.front();q.pop();
        for(int u:adj[v])if(dist[u]==-1){
            dist[u]=dist[v]+1;
            q.push(u);
        }
    }
}

int main(){
    int n,m,a,b;cin>>n>>m>>a>>b;
    vector<vector<int>> adj(n+1);
    for(int i=0;i<m;i++){
        int v,u;cin>>v>>u;
        adj[v].push_back(u);
        adj[u].push_back(v);
    }
    vector<int> dista(n+1,-1), distb(n+1,-1);
    bfs(adj, dista, a);
    bfs(adj, distb, b);

    vector<char> ans(n+1, 'B');
    vector<pii> diff(n);
    long long cost=0;
    for(int i=1;i<=n;i++){
        diff[i-1]={dista[i]-distb[i], i};
        cost+=distb[i];
    }
    sort(diff.begin(),diff.end());
    for(int i=0;i<n/2;i++){
        ans[diff[i].second]='A';
        cost+=diff[i].first;
    }
    cout<<cost<<'\n';
    for(int i=1;i<=n;i++)cout<<ans[i]<<' ';cout<<'\n';
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base0/40
1Hibás válasz0/01ms316 KiB
2Hibás válasz0/01ms500 KiB
3Hibás válasz0/21ms316 KiB
4Hibás válasz0/21ms332 KiB
5Hibás válasz0/31ms316 KiB
6Hibás válasz0/31ms536 KiB
7Hibás válasz0/21ms316 KiB
8Hibás válasz0/21ms316 KiB
9Hibás válasz0/31ms316 KiB
10Hibás válasz0/31ms316 KiB
11Hibás válasz0/26ms536 KiB
12Hibás válasz0/28ms848 KiB
13Hibás válasz0/352ms1624 KiB
14Hibás válasz0/36ms564 KiB
15Hibás válasz0/261ms3616 KiB
16Hibás válasz0/271ms3628 KiB
17Hibás válasz0/343ms3380 KiB
18Hibás válasz0/376ms3892 KiB