Submission #90659

#TimeUsernameProblemLanguageResultExecution timeMemory
90659314rate007 (CEOI14_007)C++14
0 / 100
502 ms102168 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; typedef long double ld; const int N=200000+5; int n,m; int s,d,a,b; vector<int>g[N]; int di[2][N]; void build(int k,int go) { for(int i=1;i<=n;i++) { di[k][i]=-1; } di[k][go]=0; queue<int>q; q.push(go); while(!q.empty()) { int nod=q.front(); q.pop(); for(auto &nou:g[nod]) { if(di[k][nou]==-1) { di[k][nou]=1+di[k][nod]; q.push(nou); } } } } int main() { // freopen("input","r",stdin); // freopen("output","w",stdout); cin>>n>>m; cin>>s>>d>>a>>b; for(int i=1;i<=m;i++) { int x,y; cin>>x>>y; g[x].push_back(y); g[y].push_back(x); } build(0,s); build(1,d); int a1=di[0][a],a2=di[0][b]; int b1=di[1][a],b2=di[1][b]; int ans=min(b1-a1,b2-a2); if(ans>=0) { cout<<ans<<"\n"; } else { cout<<"-1\n"; } return 0; cout<<a1<<" "<<a2<<" ; "<<b1<<" "<<b2<<"\n"; return 0; } /** **/
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...