Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- vector< int > edge[800005];
- bool vis[800005];
- int lvl[800005];
- void bfs( int src )
- {
- queue < int > q;
- memset( vis, 0, sizeof vis );
- memset( lvl, 0, sizeof lvl );
- q.push( src );
- vis[ src ] = true;
- while( !q.empty() ){
- int u = q.front();
- q.pop();
- for( int i = 0; i<edge[u].size(); i++){
- if( !vis[edge[u][i]] ){
- int v =edge[u][i];
- vis[v] = true;
- lvl = lvl[u]+1;
- q.push( v );
- }
- }
- }
- }
- int main() {
- int T, n, x, y, m, s, e;
- cin >> T;
- while( T-- && cin >> n >> m ) {
- for(int i=0; i<=m; i++) edge[i].clear();
- int ara[m+5];
- for( int i=1; i<=n; i++){
- cin >> ara[i];
- }
- while( n-- ) {
- cin >> x >> y;
- edge[ x ].push_back( y );
- edge[ y ].push_back( x );
- }
- cin >> s >> e;
- bfs( s );
- cout << lvl[e] << endl;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement