Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- int odw[1000004];
- vector <int> G[1000004];
- int tab[1000004];
- queue <int> Q;
- int n,m,czas,u,a,b, wynik=INT_MAX;
- bool pr;
- void wprowadz()
- {
- cin>>n>>m;
- for (int i=1; i<=n; i++)
- cin>>tab[i];
- for (int i=1; i<=m; i++)
- {
- cin>>a>>b;
- G[a].push_back(b);
- G[b].push_back(a);
- }
- }
- void BFS (int w)
- {
- odw[w]=1;
- Q.push(w);
- while(!Q.empty())
- {
- int v=Q.front();
- Q.pop();
- if (pr==true) return;
- if (tab[v]==1) {pr=true; wynik=min(wynik, czas); return;}
- czas++;
- for (int i=0; i<G[v].size(); i++)
- {
- int u=G[v][i];
- if (odw[u]==0)
- {
- odw[u]=1;
- Q.push(u);
- }
- }
- }
- }
- int main()
- {
- cin.tie(0);
- cout.tie(0);
- ios_base::sync_with_stdio(0);
- wprowadz();
- for (int j=1; j<=n; j++)
- {
- czas=0;
- if (tab[j]==0) BFS(j);
- pr=false;
- }
- cout<<wynik;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement