Submission #475256

#TimeUsernameProblemLanguageResultExecution timeMemory
475256MohamedAhmed04007 (CEOI14_007)C++14
0 / 100
242 ms23404 KiB
#include <bits/stdc++.h>

using namespace std ;

const int inf = 1e9 ;
const int MAX = 2e5 + 10 ;

int arr[MAX] ;
int n , m ;
int a , b , x , y ;

vector< vector<int> >adj(MAX) ;

int dist[2][MAX] ;

void bfs(int src , int t)
{
	for(int i = 1 ; i <= n ; ++i)
		dist[t][i] = inf ;
	queue<int>q ;
	dist[t][src] = 0 ;
	q.push(src) ;
	while(!q.empty())
	{
		int node = q.front() ;
		q.pop() ;
		for(auto &child : adj[node])
		{
			if(dist[t][node]+1 < dist[t][child])
			{
				dist[t][child] = dist[t][node]+1 ;
				q.push(child) ;
			}
		}
	}
}

int main()
{
	ios_base::sync_with_stdio(0) ;
	cin.tie(0) ;
	cin>>n>>m ;
	cin>>a>>b>>x>>y ;
	for(int i = 0 ; i < m ; ++i)
	{
		int u , v ;
		cin>>u>>v ;
		adj[u].push_back(v) ;
		adj[v].push_back(u) ;
	}
	bfs(a , 0) ;
	bfs(b , 1) ;
	return cout<<max(-1 , min(dist[1][x] - dist[0][x] , dist[1][y] - dist[0][y]))<<"\n" , 0 ;
}		
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...