#include <iostream>
#include <bits/stdc++.h>
using namespace std;
struct Graf
{
vector<int> sz;
bool volt=false;
int A=1000000, B=1000000;
char er;
};
int N, M, A, B;
int Adb=0, Bdb=0;
Graf g[40001];
void szelbejarA()
{
g[A].A=0;
queue<int> q;
q.push(A);
int p;
while(!q.empty())
{
p=q.front();
q.pop();
for(int i=0; i<g[p].sz.size(); i++)
{
int j=g[p].sz[i];
if(g[j].A==1000000)
{
q.push(j);
g[j].A=g[p].A+1;
}
}
}
}
void szelbejarB()
{
g[B].B=0;
queue<int> q;
q.push(B);
int p;
while(!q.empty())
{
p=q.front();
q.pop();
for(int i=0; i<g[p].sz.size(); i++)
{
int j=g[p].sz[i];
if(g[j].B==1000000)
{
q.push(j);
g[j].B=g[p].B+1;
}
}
}
}
struct comp
{
bool operator()(int a, int b)
{
if(abs(g[a].A-g[a].B)!=abs(g[b].A-g[b].B))
return abs(g[a].A-g[a].B)<abs(g[b].A-g[b].B);
return a>b;
}
};
int main()
{
cin >> N >> M >> A >> B;
int b1, b2;
for(int i=0; i<M; i++)
{
cin >> b1 >> b2;
g[b1].sz.push_back(b2);
g[b2].sz.push_back(b1);
}
szelbejarA();
szelbejarB();
priority_queue<int, vector<int>, comp> pq;
for(int i=1; i<=N; i++)
pq.push(i);
int K=0;
int idx;
while(!pq.empty())
{
idx=pq.top();
pq.pop();
if(Adb<N/2 && Bdb<N/2)
{
if(g[idx].A<=g[idx].B)
{
Adb++;
K+=g[idx].A;
g[idx].er='A';
}
else
{
Bdb++;
K+=g[idx].B;
g[idx].er='B';
}
}
else if(Adb<N/2)
{
Adb++;
K+=g[idx].A;
g[idx].er='A';
}
else
{
Bdb++;
K+=g[idx].B;
g[idx].er='B';
}
}
cout << K << endl;
for(int i=1; i<=N; i++)
cout << g[i].er;
cout << endl;
return 0;
}
/*
6 7 1 3
1 2
3 1
3 4
1 5
2 6
6 5
4 5
*/
Részfeladat | Összpont | Teszt | Verdikt | Idő | Memória | ||
---|---|---|---|---|---|---|---|
base | 40/40 | ||||||
1 | Elfogadva | 0/0 | 4ms | 4896 KiB | |||
2 | Elfogadva | 0/0 | 3ms | 4956 KiB | |||
3 | Elfogadva | 2/2 | 3ms | 4956 KiB | |||
4 | Elfogadva | 2/2 | 3ms | 4936 KiB | |||
5 | Elfogadva | 3/3 | 3ms | 4940 KiB | |||
6 | Elfogadva | 3/3 | 3ms | 4940 KiB | |||
7 | Elfogadva | 2/2 | 4ms | 4948 KiB | |||
8 | Elfogadva | 2/2 | 4ms | 4956 KiB | |||
9 | Elfogadva | 3/3 | 4ms | 4960 KiB | |||
10 | Elfogadva | 3/3 | 3ms | 4968 KiB | |||
11 | Elfogadva | 2/2 | 12ms | 5448 KiB | |||
12 | Elfogadva | 2/2 | 16ms | 5688 KiB | |||
13 | Elfogadva | 3/3 | 83ms | 8272 KiB | |||
14 | Elfogadva | 3/3 | 7ms | 6344 KiB | |||
15 | Elfogadva | 2/2 | 75ms | 10260 KiB | |||
16 | Elfogadva | 2/2 | 119ms | 11328 KiB | |||
17 | Elfogadva | 3/3 | 50ms | 11116 KiB | |||
18 | Elfogadva | 3/3 | 85ms | 12960 KiB |