952021-01-11 22:32:47Babják PéterÜzletlánccpp11Accepted 40/4041ms18584 KiB
#include <bits/stdc++.h>
#define N 200001
using namespace std;
int A[N];
int B[N];
bool volt[N];
bool volt2[N];
vector<int>adj[N];
bool e=0;
void bfs(int z)
{
	vector<int>sor;
	sor.push_back(z);
	for(int i=0;i<sor.size();i++)
	{
		int v=sor[i];
		for(int u: adj[v])
		{
			if(volt[u]==0)
			{
				A[u]=A[v]+1;
				sor.push_back(u);
				volt[u]=1;
			}
		}
	}
}
void bfs2(int z)
{
	vector<int>sor;
	sor.push_back(z);
	for(int i=0;i<sor.size();i++)
	{
		int v=sor[i];
		for(int u: adj[v])
		{
			if(volt2[u]==0)
			{
				B[u]=B[v]+1;
				sor.push_back(u);
				volt2[u]=1;
			}
		}
	}
}
struct pen
{
	int val;
	int ind;	
};
struct cmp
{
	bool operator()(const pen &a,const pen &b)
	{
		return a.val<b.val;
	}	
};
int main()
{
	int n,m,a,b;
	ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);
	cin>>n>>m>>a>>b;a--;b--;
	A[a]=0;
	B[b]=0;
	for(int i=0;i<m;i++)
	{
		int c,d;cin>>c>>d;c--;d--;
		adj[c].push_back(d);
		adj[d].push_back(c);
	}
	volt[a]=1;
	bfs(a);
	volt2[b]=1;
	bfs2(b);
	pen p[n];
	for(int i=0;i<n;i++)
	{
		pen g;
		g.ind=i;
		g.val=A[i]-B[i];
		p[i]=g;
	}
	sort(p,p+n,cmp());
	
	bool ch[n];
	int sum=0;
	for(int i=0;i<n/2;i++)
	{
		ch[p[i].ind]=0;
		sum+=A[p[i].ind];
	}
	for(int i=n/2;i<n;i++)
	{
		ch[p[i].ind]=1;
		sum+=B[p[i].ind];
	}
	cout<<sum<<endl;
	char t[2]={'A','B'};
	for(int i=0;i<n;i++)
	{
		cout<<t[ch[i]];
	}
	return 0;
}
SubtaskSumTestVerdictTimeMemory
base40/40
1Accepted0/06ms11176 KiB
2Accepted0/04ms11228 KiB
3Accepted2/26ms11148 KiB
4Accepted2/24ms11148 KiB
5Accepted3/34ms11280 KiB
6Accepted3/34ms11228 KiB
7Accepted2/24ms11284 KiB
8Accepted2/24ms11292 KiB
9Accepted3/36ms11292 KiB
10Accepted3/34ms11284 KiB
11Accepted2/28ms11892 KiB
12Accepted2/28ms12116 KiB
13Accepted3/327ms14688 KiB
14Accepted3/37ms12644 KiB
15Accepted2/234ms17012 KiB
16Accepted2/241ms17988 KiB
17Accepted3/325ms17652 KiB
18Accepted3/341ms18584 KiB