# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
528060 | qwerasdfzxcl | From Hacks to Snitches (BOI21_watchmen) | C++14 | 1039 ms | 55932 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
typedef long long ll;
using namespace std;
const int INF = 1e9;
int dist[100100][125], a[125];
vector<int> adj[100100];
int main(){
int n, m;
scanf("%d %d", &n, &m);
for (int i=1;i<=n;i++) adj[i].push_back(i);
for (int i=0;i<m;i++){
int x, y;
scanf("%d %d", &x, &y);
adj[x].push_back(y);
adj[y].push_back(x);
}
int k, x;
scanf("%d", &k);
for (int i=0;i<k;i++){
scanf("%d", &x);
for (int j=0;j<x;j++) scanf("%d", a+j);
}
for (int i=1;i<=n;i++) fill(dist[i], dist[i]+125, INF);
dist[1][0] = 0;
queue<pair<int, int>> q;
q.emplace(1, 0);
while(!q.empty()){
auto p = q.front(); q.pop();
//printf("%d %d: %d\n", p.first, p.second, dist[p.first][p.second]);
int ct = p.second, nt = p.second + 1;
if (nt>=x) nt = 0;
for (auto &v:adj[p.first]){
if (a[nt]==v) continue;
if (a[ct]==v && a[nt]==p.first) continue;
if (dist[v][nt] <= dist[p.first][p.second] + 1) continue;
dist[v][nt] = dist[p.first][p.second] + 1;
q.emplace(v, nt);
}
}
int ans = *min_element(dist[n], dist[n]+125);
if (ans==INF) printf("impossible\n");
else printf("%d\n", ans);
return 0;
}
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |