Submission #391853

#TimeUsernameProblemLanguageResultExecution timeMemory
391853wiwiho007 (CEOI14_007)C++14
30 / 100
275 ms16992 KiB
#include <bits/stdc++.h> #define eb emplace_back #define mp make_pair #define F first #define S second #define printv(a, b) {\ for(auto pv : a) b << pv << " ";\ b << "\n";\ } using namespace std; using pii = pair<int, int>; ostream& operator<<(ostream& o, pii p){ return o << '(' << p.F << ',' << p.S << ')'; } int n, m; vector<vector<int>> g; vector<int> getdis(int s){ vector<int> dis(n + 1, -1); dis[s] = 0; queue<int> q; q.push(s); while(!q.empty()){ int now = q.front(); q.pop(); for(int i : g[now]){ if(dis[i] != -1) continue; dis[i] = dis[now] + 1; q.push(i); } } return dis; } int main(){ ios_base::sync_with_stdio(false); cin.tie(0); cin >> n >> m; int s, d, a, b; cin >> s >> d >> a >> b; g.resize(n + 1); for(int i = 0; i < m; i++){ int u, v; cin >> u >> v; g[u].eb(v); g[v].eb(u); } vector<int> ds = getdis(s); vector<int> dd = getdis(d); vector<int> da = getdis(a); vector<int> db = getdis(b); int tmp = min(dd[a], dd[b]); int ans = ds[a]; for(int i = 1; i <= n; i++){ if(da[i] <= 1 && db[i] <= 1){ ans = min(ds[i], ans); } } ans = tmp - 1 - ans; ans = max(ans, -1); cout << ans << "\n"; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...