Submission #1214434

#TimeUsernameProblemLanguageResultExecution timeMemory
1214434MohamedFaresNebiliFrom Hacks to Snitches (BOI21_watchmen)C++20
5 / 100
423 ms58840 KiB
#include <bits/stdc++.h> using namespace std; int N, M, K; vector<int> adj[250005]; int DP[100005][126]; int _L, L[155]; int32_t main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin >> N >> M; for(int l = 1; l <= N; l++) adj[l].push_back(l); for(int l = 0; l < M; l++) { int U, V; cin >> U >> V; adj[U].push_back(V); adj[V].push_back(U); } cin >> K; cin >> _L; for(int l = 0; l < _L; l++) cin >> L[l]; for(int l = 1; l <= N; l++) for(int i = 0; i < _L; i++) DP[l][i] = 1e9 + 7; DP[1][0] = 0; queue<pair<int, int>> Q; Q.push({1, 0}); while(!Q.empty()) { int A = Q.front().first; int B = Q.front().second; int lst = L[B]; int cx = B; Q.pop(); if(A == N) break; int C = DP[A][B]; B++; B %= _L; int V = L[B]; for(auto U : adj[A]) { if(DP[U][B] != 1e9 + 7) continue; if(U == V) continue; if(U == lst && V == A) continue; DP[U][B] = DP[A][cx] + 1; Q.push({U, B}); } } int res = 1e9 + 7; for(int l = 0; l < _L; l++) res = min(res, DP[N][l]); cout << (res == 1e9 + 7 ? -1 : res); return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...