#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define ii pair<int,int>
#define iii pair<int,ii>
#define fi first
#define se second
#define endl '\n'
#define puf push_front
#define pof pop_front
#define pub push_back
#define pob pop_back
#define rep(x,s,e) for (auto x=s-(s>e);x!=e-(s>e);(s<e)?x++:x--)
#define all(x) (x).begin(),(x).end()
#define sz(x) (int) (x).size()
int n,m,k;
vector<ii> edges;
vector<int> w[250005]; //period is implicit here
vector<int> al[250005];
int id[250005]; //which watchmen
int bad[250005]; //when the watchmen comes
int ped[250005];
vector<ii> dial[1000005];
void read(int &x){
x=0;
char ch=getchar_unlocked();
while (ch&16){
x=(x<<3)+(x<<1)+(ch&15);
ch=getchar_unlocked();
}
}
int fix(int i,int j){
i%=j;
if (i<0) i+=j;
return i;
}
void upd(int k,int i,int j){
if (w[i][j]>k){
w[i][j]=k;
//pq.push(iii(k,ii(i,j)));
if (k>1000000) return;
dial[k].pub(ii(i,j));
}
}
int main(){
cin.tie(0);
cout.tie(0);
cin.sync_with_stdio(false);
read(n),read(m);
int a,b;
rep(x,0,m){
read(a),read(b);
al[a].pub(b);
al[b].pub(a);
}
memset(ped,-1,sizeof(ped));
memset(id,-1,sizeof(id));
memset(bad,-1,sizeof(bad));
read(k);
rep(x,0,k){
read(a);
vector<int> path;
rep(y,0,a){
read(b);
path.pub(b);
bad[b]=y;
id[b]=x;
ped[b]=a;
}
}
rep(x,1,n+1){
if (ped[x]==-1) w[x].pub(1e9);
else{
rep(y,0,ped[x]) w[x].pub(1e9);
}
}
upd(0,1,0);
int weight=0;
while (weight<1000000){
if (dial[weight].empty()){
weight++;
continue;
}
int n1,n2;
tie(n1,n2)=dial[weight].back();
dial[weight].pob();
if (w[n1][n2]!=weight) continue;
if (ped[n1]!=-1 && weight%ped[n1]==bad[n1]) continue;
//same position as watchmen
if (n1==n){
cout<<weight<<endl;
return 0;
}
//cout<<weight<<" "<<n1<<" "<<n2<<" "<<ped[n1]<<" "<<bad[n1]<<endl;
for (int x=0;x<sz(al[n1]);x++){
auto it=al[n1][x];
if (ped[it]==-1){
//normal dijkstra into node without period
int ww=weight;
if (n1<=n) ww++;
upd(ww,it,0);
//delete the edge
swap(al[n1][x],al[n1].back());
al[n1].pob();
x--;
}
else if (ped[n1]==-1 && ped[it]!=-1){
//node without period into node with period
int ww=weight+1;
upd(ww,it,ww%ped[it]);
//also need one that lands immediately after watchmen pass
ww=weight+fix(bad[it]-weight,ped[it])+1;
upd(ww,it,ww%ped[it]);
}
else if (id[n1]==id[it]){
//same watchmen
int ww=weight+1;
if ((bad[it]+1)%ped[it]==bad[n1] && ww%ped[it]==bad[n1]) continue;
upd(ww,it,ww%ped[it]);
}
else{
//different watchmen
//time that watchmen on other side steps on it
int tt=weight+fix(bad[it]-weight,ped[it]);
if (tt%ped[n1]==bad[n1]){ //cannot come back to our side
upd(weight+1,it,weight%ped[it]);
}
else{ //ok we can update all it
upd(weight+1,it,weight%ped[it]);
upd(tt+1,it,(tt+1)%ped[it]);
//delete the edge
swap(al[n1][x],al[n1].back());
al[n1].pob();
x--;
}
}
}
if (ped[n1]!=-1){
upd(weight+1,n1,(n2+1)%ped[n1]);
}
}
/*
rep(x,1,IDX){
cout<<x<<": ";
for (auto &it:w[x]) cout<<it<<" "; cout<<endl;
}
//*/
cout<<"impossible"<<endl;
}
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
28 ms |
39884 KB |
Output is correct |
2 |
Correct |
92 ms |
48484 KB |
Output is correct |
3 |
Correct |
84 ms |
47172 KB |
Output is correct |
4 |
Correct |
105 ms |
46660 KB |
Output is correct |
5 |
Correct |
21 ms |
38536 KB |
Output is correct |
6 |
Correct |
93 ms |
46928 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
28 ms |
39460 KB |
Output is correct |
2 |
Correct |
93 ms |
48344 KB |
Output is correct |
3 |
Correct |
83 ms |
47104 KB |
Output is correct |
4 |
Correct |
118 ms |
46996 KB |
Output is correct |
5 |
Correct |
22 ms |
38504 KB |
Output is correct |
6 |
Correct |
107 ms |
46868 KB |
Output is correct |
7 |
Correct |
96 ms |
47180 KB |
Output is correct |
8 |
Correct |
86 ms |
47316 KB |
Output is correct |
9 |
Correct |
81 ms |
47428 KB |
Output is correct |
10 |
Correct |
87 ms |
46220 KB |
Output is correct |
11 |
Correct |
79 ms |
45636 KB |
Output is correct |
12 |
Correct |
89 ms |
46808 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
28 ms |
39460 KB |
Output is correct |
2 |
Correct |
93 ms |
48344 KB |
Output is correct |
3 |
Correct |
83 ms |
47104 KB |
Output is correct |
4 |
Correct |
118 ms |
46996 KB |
Output is correct |
5 |
Correct |
22 ms |
38504 KB |
Output is correct |
6 |
Correct |
107 ms |
46868 KB |
Output is correct |
7 |
Correct |
96 ms |
47180 KB |
Output is correct |
8 |
Correct |
86 ms |
47316 KB |
Output is correct |
9 |
Correct |
81 ms |
47428 KB |
Output is correct |
10 |
Correct |
87 ms |
46220 KB |
Output is correct |
11 |
Correct |
79 ms |
45636 KB |
Output is correct |
12 |
Correct |
89 ms |
46808 KB |
Output is correct |
13 |
Correct |
29 ms |
39876 KB |
Output is correct |
14 |
Correct |
104 ms |
48504 KB |
Output is correct |
15 |
Correct |
84 ms |
47172 KB |
Output is correct |
16 |
Correct |
107 ms |
46732 KB |
Output is correct |
17 |
Correct |
23 ms |
38604 KB |
Output is correct |
18 |
Correct |
90 ms |
46948 KB |
Output is correct |
19 |
Correct |
96 ms |
47136 KB |
Output is correct |
20 |
Correct |
84 ms |
47296 KB |
Output is correct |
21 |
Correct |
83 ms |
47356 KB |
Output is correct |
22 |
Correct |
88 ms |
46176 KB |
Output is correct |
23 |
Correct |
84 ms |
45596 KB |
Output is correct |
24 |
Correct |
85 ms |
46776 KB |
Output is correct |
25 |
Correct |
1548 ms |
93028 KB |
Output is correct |
26 |
Correct |
1574 ms |
98000 KB |
Output is correct |
27 |
Correct |
1459 ms |
93900 KB |
Output is correct |
28 |
Correct |
962 ms |
98616 KB |
Output is correct |
29 |
Correct |
1456 ms |
86332 KB |
Output is correct |
30 |
Correct |
1499 ms |
88392 KB |
Output is correct |
31 |
Correct |
1736 ms |
95204 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
28 ms |
39460 KB |
Output is correct |
2 |
Correct |
93 ms |
48344 KB |
Output is correct |
3 |
Correct |
83 ms |
47104 KB |
Output is correct |
4 |
Correct |
118 ms |
46996 KB |
Output is correct |
5 |
Correct |
22 ms |
38504 KB |
Output is correct |
6 |
Correct |
107 ms |
46868 KB |
Output is correct |
7 |
Correct |
96 ms |
47180 KB |
Output is correct |
8 |
Correct |
86 ms |
47316 KB |
Output is correct |
9 |
Correct |
81 ms |
47428 KB |
Output is correct |
10 |
Correct |
87 ms |
46220 KB |
Output is correct |
11 |
Correct |
79 ms |
45636 KB |
Output is correct |
12 |
Correct |
89 ms |
46808 KB |
Output is correct |
13 |
Correct |
29 ms |
39876 KB |
Output is correct |
14 |
Correct |
104 ms |
48504 KB |
Output is correct |
15 |
Correct |
84 ms |
47172 KB |
Output is correct |
16 |
Correct |
107 ms |
46732 KB |
Output is correct |
17 |
Correct |
23 ms |
38604 KB |
Output is correct |
18 |
Correct |
90 ms |
46948 KB |
Output is correct |
19 |
Correct |
96 ms |
47136 KB |
Output is correct |
20 |
Correct |
84 ms |
47296 KB |
Output is correct |
21 |
Correct |
83 ms |
47356 KB |
Output is correct |
22 |
Correct |
88 ms |
46176 KB |
Output is correct |
23 |
Correct |
84 ms |
45596 KB |
Output is correct |
24 |
Correct |
85 ms |
46776 KB |
Output is correct |
25 |
Correct |
1548 ms |
93028 KB |
Output is correct |
26 |
Correct |
1574 ms |
98000 KB |
Output is correct |
27 |
Correct |
1459 ms |
93900 KB |
Output is correct |
28 |
Correct |
962 ms |
98616 KB |
Output is correct |
29 |
Correct |
1456 ms |
86332 KB |
Output is correct |
30 |
Correct |
1499 ms |
88392 KB |
Output is correct |
31 |
Correct |
1736 ms |
95204 KB |
Output is correct |
32 |
Correct |
33 ms |
39820 KB |
Output is correct |
33 |
Correct |
93 ms |
48560 KB |
Output is correct |
34 |
Correct |
99 ms |
47164 KB |
Output is correct |
35 |
Correct |
118 ms |
46768 KB |
Output is correct |
36 |
Correct |
21 ms |
38580 KB |
Output is correct |
37 |
Correct |
82 ms |
46884 KB |
Output is correct |
38 |
Correct |
89 ms |
47256 KB |
Output is correct |
39 |
Correct |
91 ms |
47268 KB |
Output is correct |
40 |
Correct |
92 ms |
47328 KB |
Output is correct |
41 |
Correct |
86 ms |
46176 KB |
Output is correct |
42 |
Correct |
88 ms |
45580 KB |
Output is correct |
43 |
Correct |
81 ms |
46848 KB |
Output is correct |
44 |
Correct |
1496 ms |
92452 KB |
Output is correct |
45 |
Correct |
1457 ms |
97480 KB |
Output is correct |
46 |
Correct |
1452 ms |
93248 KB |
Output is correct |
47 |
Correct |
977 ms |
97876 KB |
Output is correct |
48 |
Correct |
1390 ms |
85668 KB |
Output is correct |
49 |
Correct |
1455 ms |
87312 KB |
Output is correct |
50 |
Correct |
1712 ms |
95160 KB |
Output is correct |
51 |
Correct |
1842 ms |
127452 KB |
Output is correct |
52 |
Correct |
1973 ms |
159912 KB |
Output is correct |
53 |
Correct |
1737 ms |
127648 KB |
Output is correct |
54 |
Correct |
876 ms |
93012 KB |
Output is correct |
55 |
Execution timed out |
6080 ms |
100616 KB |
Time limit exceeded |
56 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
28 ms |
39884 KB |
Output is correct |
2 |
Correct |
92 ms |
48484 KB |
Output is correct |
3 |
Correct |
84 ms |
47172 KB |
Output is correct |
4 |
Correct |
105 ms |
46660 KB |
Output is correct |
5 |
Correct |
21 ms |
38536 KB |
Output is correct |
6 |
Correct |
93 ms |
46928 KB |
Output is correct |
7 |
Correct |
28 ms |
39460 KB |
Output is correct |
8 |
Correct |
93 ms |
48344 KB |
Output is correct |
9 |
Correct |
83 ms |
47104 KB |
Output is correct |
10 |
Correct |
118 ms |
46996 KB |
Output is correct |
11 |
Correct |
22 ms |
38504 KB |
Output is correct |
12 |
Correct |
107 ms |
46868 KB |
Output is correct |
13 |
Correct |
96 ms |
47180 KB |
Output is correct |
14 |
Correct |
86 ms |
47316 KB |
Output is correct |
15 |
Correct |
81 ms |
47428 KB |
Output is correct |
16 |
Correct |
87 ms |
46220 KB |
Output is correct |
17 |
Correct |
79 ms |
45636 KB |
Output is correct |
18 |
Correct |
89 ms |
46808 KB |
Output is correct |
19 |
Correct |
22 ms |
38460 KB |
Output is correct |
20 |
Correct |
21 ms |
38396 KB |
Output is correct |
21 |
Correct |
25 ms |
38480 KB |
Output is correct |
22 |
Correct |
31 ms |
39884 KB |
Output is correct |
23 |
Correct |
101 ms |
48824 KB |
Output is correct |
24 |
Correct |
84 ms |
47348 KB |
Output is correct |
25 |
Correct |
122 ms |
47004 KB |
Output is correct |
26 |
Correct |
23 ms |
38512 KB |
Output is correct |
27 |
Correct |
91 ms |
47152 KB |
Output is correct |
28 |
Correct |
78 ms |
47640 KB |
Output is correct |
29 |
Correct |
80 ms |
47532 KB |
Output is correct |
30 |
Correct |
80 ms |
47676 KB |
Output is correct |
31 |
Correct |
93 ms |
46372 KB |
Output is correct |
32 |
Correct |
77 ms |
45856 KB |
Output is correct |
33 |
Correct |
81 ms |
46968 KB |
Output is correct |
34 |
Correct |
1496 ms |
91112 KB |
Output is correct |
35 |
Correct |
1705 ms |
85128 KB |
Output is correct |
36 |
Incorrect |
1648 ms |
87220 KB |
Output isn't correct |
37 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
28 ms |
39884 KB |
Output is correct |
2 |
Correct |
92 ms |
48484 KB |
Output is correct |
3 |
Correct |
84 ms |
47172 KB |
Output is correct |
4 |
Correct |
105 ms |
46660 KB |
Output is correct |
5 |
Correct |
21 ms |
38536 KB |
Output is correct |
6 |
Correct |
93 ms |
46928 KB |
Output is correct |
7 |
Correct |
28 ms |
39460 KB |
Output is correct |
8 |
Correct |
93 ms |
48344 KB |
Output is correct |
9 |
Correct |
83 ms |
47104 KB |
Output is correct |
10 |
Correct |
118 ms |
46996 KB |
Output is correct |
11 |
Correct |
22 ms |
38504 KB |
Output is correct |
12 |
Correct |
107 ms |
46868 KB |
Output is correct |
13 |
Correct |
96 ms |
47180 KB |
Output is correct |
14 |
Correct |
86 ms |
47316 KB |
Output is correct |
15 |
Correct |
81 ms |
47428 KB |
Output is correct |
16 |
Correct |
87 ms |
46220 KB |
Output is correct |
17 |
Correct |
79 ms |
45636 KB |
Output is correct |
18 |
Correct |
89 ms |
46808 KB |
Output is correct |
19 |
Correct |
29 ms |
39876 KB |
Output is correct |
20 |
Correct |
104 ms |
48504 KB |
Output is correct |
21 |
Correct |
84 ms |
47172 KB |
Output is correct |
22 |
Correct |
107 ms |
46732 KB |
Output is correct |
23 |
Correct |
23 ms |
38604 KB |
Output is correct |
24 |
Correct |
90 ms |
46948 KB |
Output is correct |
25 |
Correct |
96 ms |
47136 KB |
Output is correct |
26 |
Correct |
84 ms |
47296 KB |
Output is correct |
27 |
Correct |
83 ms |
47356 KB |
Output is correct |
28 |
Correct |
88 ms |
46176 KB |
Output is correct |
29 |
Correct |
84 ms |
45596 KB |
Output is correct |
30 |
Correct |
85 ms |
46776 KB |
Output is correct |
31 |
Correct |
1548 ms |
93028 KB |
Output is correct |
32 |
Correct |
1574 ms |
98000 KB |
Output is correct |
33 |
Correct |
1459 ms |
93900 KB |
Output is correct |
34 |
Correct |
962 ms |
98616 KB |
Output is correct |
35 |
Correct |
1456 ms |
86332 KB |
Output is correct |
36 |
Correct |
1499 ms |
88392 KB |
Output is correct |
37 |
Correct |
1736 ms |
95204 KB |
Output is correct |
38 |
Correct |
22 ms |
38460 KB |
Output is correct |
39 |
Correct |
21 ms |
38396 KB |
Output is correct |
40 |
Correct |
25 ms |
38480 KB |
Output is correct |
41 |
Correct |
31 ms |
39884 KB |
Output is correct |
42 |
Correct |
101 ms |
48824 KB |
Output is correct |
43 |
Correct |
84 ms |
47348 KB |
Output is correct |
44 |
Correct |
122 ms |
47004 KB |
Output is correct |
45 |
Correct |
23 ms |
38512 KB |
Output is correct |
46 |
Correct |
91 ms |
47152 KB |
Output is correct |
47 |
Correct |
78 ms |
47640 KB |
Output is correct |
48 |
Correct |
80 ms |
47532 KB |
Output is correct |
49 |
Correct |
80 ms |
47676 KB |
Output is correct |
50 |
Correct |
93 ms |
46372 KB |
Output is correct |
51 |
Correct |
77 ms |
45856 KB |
Output is correct |
52 |
Correct |
81 ms |
46968 KB |
Output is correct |
53 |
Correct |
1496 ms |
91112 KB |
Output is correct |
54 |
Correct |
1705 ms |
85128 KB |
Output is correct |
55 |
Incorrect |
1648 ms |
87220 KB |
Output isn't correct |
56 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
28 ms |
39884 KB |
Output is correct |
2 |
Correct |
92 ms |
48484 KB |
Output is correct |
3 |
Correct |
84 ms |
47172 KB |
Output is correct |
4 |
Correct |
105 ms |
46660 KB |
Output is correct |
5 |
Correct |
21 ms |
38536 KB |
Output is correct |
6 |
Correct |
93 ms |
46928 KB |
Output is correct |
7 |
Correct |
28 ms |
39460 KB |
Output is correct |
8 |
Correct |
93 ms |
48344 KB |
Output is correct |
9 |
Correct |
83 ms |
47104 KB |
Output is correct |
10 |
Correct |
118 ms |
46996 KB |
Output is correct |
11 |
Correct |
22 ms |
38504 KB |
Output is correct |
12 |
Correct |
107 ms |
46868 KB |
Output is correct |
13 |
Correct |
96 ms |
47180 KB |
Output is correct |
14 |
Correct |
86 ms |
47316 KB |
Output is correct |
15 |
Correct |
81 ms |
47428 KB |
Output is correct |
16 |
Correct |
87 ms |
46220 KB |
Output is correct |
17 |
Correct |
79 ms |
45636 KB |
Output is correct |
18 |
Correct |
89 ms |
46808 KB |
Output is correct |
19 |
Correct |
29 ms |
39876 KB |
Output is correct |
20 |
Correct |
104 ms |
48504 KB |
Output is correct |
21 |
Correct |
84 ms |
47172 KB |
Output is correct |
22 |
Correct |
107 ms |
46732 KB |
Output is correct |
23 |
Correct |
23 ms |
38604 KB |
Output is correct |
24 |
Correct |
90 ms |
46948 KB |
Output is correct |
25 |
Correct |
96 ms |
47136 KB |
Output is correct |
26 |
Correct |
84 ms |
47296 KB |
Output is correct |
27 |
Correct |
83 ms |
47356 KB |
Output is correct |
28 |
Correct |
88 ms |
46176 KB |
Output is correct |
29 |
Correct |
84 ms |
45596 KB |
Output is correct |
30 |
Correct |
85 ms |
46776 KB |
Output is correct |
31 |
Correct |
1548 ms |
93028 KB |
Output is correct |
32 |
Correct |
1574 ms |
98000 KB |
Output is correct |
33 |
Correct |
1459 ms |
93900 KB |
Output is correct |
34 |
Correct |
962 ms |
98616 KB |
Output is correct |
35 |
Correct |
1456 ms |
86332 KB |
Output is correct |
36 |
Correct |
1499 ms |
88392 KB |
Output is correct |
37 |
Correct |
1736 ms |
95204 KB |
Output is correct |
38 |
Correct |
33 ms |
39820 KB |
Output is correct |
39 |
Correct |
93 ms |
48560 KB |
Output is correct |
40 |
Correct |
99 ms |
47164 KB |
Output is correct |
41 |
Correct |
118 ms |
46768 KB |
Output is correct |
42 |
Correct |
21 ms |
38580 KB |
Output is correct |
43 |
Correct |
82 ms |
46884 KB |
Output is correct |
44 |
Correct |
89 ms |
47256 KB |
Output is correct |
45 |
Correct |
91 ms |
47268 KB |
Output is correct |
46 |
Correct |
92 ms |
47328 KB |
Output is correct |
47 |
Correct |
86 ms |
46176 KB |
Output is correct |
48 |
Correct |
88 ms |
45580 KB |
Output is correct |
49 |
Correct |
81 ms |
46848 KB |
Output is correct |
50 |
Correct |
1496 ms |
92452 KB |
Output is correct |
51 |
Correct |
1457 ms |
97480 KB |
Output is correct |
52 |
Correct |
1452 ms |
93248 KB |
Output is correct |
53 |
Correct |
977 ms |
97876 KB |
Output is correct |
54 |
Correct |
1390 ms |
85668 KB |
Output is correct |
55 |
Correct |
1455 ms |
87312 KB |
Output is correct |
56 |
Correct |
1712 ms |
95160 KB |
Output is correct |
57 |
Correct |
1842 ms |
127452 KB |
Output is correct |
58 |
Correct |
1973 ms |
159912 KB |
Output is correct |
59 |
Correct |
1737 ms |
127648 KB |
Output is correct |
60 |
Correct |
876 ms |
93012 KB |
Output is correct |
61 |
Execution timed out |
6080 ms |
100616 KB |
Time limit exceeded |
62 |
Halted |
0 ms |
0 KB |
- |