# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
425953 | duality | From Hacks to Snitches (BOI21_watchmen) | C++11 | 3507 ms | 524292 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>
using namespace std;
#define mp make_pair
#define pb push_back
typedef long long int LLI;
typedef vector<int> vi;
typedef pair<int,int> pii;
typedef vector<pii> vpii;
vi adjList[250000];
pair<int,pii> p[250000];
int dist[250000];
priority_queue<pii> H;
unordered_set<int> seen[250000];
int main() {
int i,j;
int N,M,K;
int u,v,l;
scanf("%d %d",&N,&M);
for (i = 0; i < M; i++) {
scanf("%d %d",&u,&v);
u--,v--;
adjList[u].pb(v);
adjList[v].pb(u);
}
scanf("%d",&K);
for (i = 0; i < K; i++) {
scanf("%d",&l);
for (j = 0; j < l; j++) scanf("%d",&v),p[v-1] = mp(l,mp(j,i));
}
for (i = 0; i < N; i++) dist[i] = 1e9;
dist[0] = 0,H.push(mp(0,0));
while (!H.empty()) {
int u = H.top().second;
int d = -H.top().first;
H.pop();
if (seen[u].count(d)) continue;
seen[u].insert(d);
if (d > dist[u]+130) continue;
for (i = 0; i < adjList[u].size(); i++) {
int v = adjList[u][i];
if (p[v].first != 0) {
if (((d+1) % p[v].first) == p[v].second.first) continue;
if (((d % p[v].first) == p[v].second.first) && (p[u].second.second == p[v].second.second) \
&& (p[u].second.first == ((p[v].second.first+1) % p[v].first))) continue;
}
if (d+1 < dist[v]+130) {
dist[v] = min(dist[v],d+1);
if (!seen[v].count(dist[v])) H.push(mp(-dist[v],v));
}
}
d++;
if ((p[u].first != 0) && ((d % p[u].first) == p[u].second.first)) continue;
if (!seen[u].count(d)) H.push(mp(-d,u));
}
if (dist[N-1] >= 1e9) printf("impossible\n");
else printf("%d\n",dist[N-1]);
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... |