QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#35557#1454. Um nik's Algorithmqingyu_orzTL 3648ms293008kbC++2.3kb2022-06-16 20:30:462022-06-16 20:30:48

Judging History

你现在查看的是最新测评结果

  • [2023-08-10 23:21:45]
  • System Update: QOJ starts to keep a history of the judgings of all the submissions.
  • [2022-06-16 20:30:48]
  • 评测
  • 测评结果:TL
  • 用时:3648ms
  • 内存:293008kb
  • [2022-06-16 20:30:46]
  • 提交

answer

#include<bits/stdc++.h>
using namespace std;
namespace file_read{
    namespace input_file_io{
        char ib[1<<25],*ip1=ib,*ip2=ib;
        inline char gc(){
#ifdef JohnAlfnov
			return getchar();
#else
            return (ip1==ip2&&(ip2=(ip1=ib)+fread(ib,1,1<<24,stdin)),ip1==ip2?EOF:*ip1++);
#endif
        }
        inline int read(){
            int x=0;
            char c=gc();
            while(c<'0'||c>'9')c=gc();
            while(c>='0'&&c<='9'){
                x=(x<<3)+(x<<1)+(c^'0');
                c=gc();
            }
            return x;
        }
    };
	using namespace input_file_io;
};
using namespace file_read;
int n,S,T;
int hd[5000005],mw[5000005],l[5000005],pre[5000005];
int nxt[12000005],c[12000005],bb[12000005],tt[12000005],tot=1;
inline void addedge(int u,int v,int w,int bh){
	if(!hd[u])hd[u]=++tot;
	else nxt[mw[u]]=++tot;
	mw[u]=tot;
	c[tot]=w,bb[tot]=bh,tt[tot]=v;
}
int q[5000005];
bool bfs(){
	for(int i=1;i<=n;++i)l[i]=1e9+7,pre[i]=hd[i];
	l[S]=1;
	int h=0,t=-1;
	q[++t]=S;
	while(h<=t){
		int x=q[h++];
		for(int i=hd[x];i;i=nxt[i]){
			int v=tt[i];
			if(c[i]==0)continue;
			if(l[v]>l[x]+1){
				l[v]=l[x]+1;
				if(v==T)return 1;
				q[++t]=v;
			}
		}
	}
	return 0;
}
int ans=0;
int dinic(int x,int rl){
	if(x==T)return rl;
	int he=0;
	for(int i=pre[x];i;i=nxt[i]){
		pre[x]=i;
		if(c[i]==0)continue;
		int v=tt[i];
		if(l[v]!=l[x]+1)continue;
		int ll=dinic(v,min(c[i],rl));
		rl-=ll,he+=ll;
		c[i]-=ll,c[i^1]+=ll;
		if(!rl)return he;
	}
	return he;
}
int main(){
	int aa=clock();
	int n1=read(),n2=read(),m=read();
	n=1+n1+n2+1;
	S=1,T=n;
	for(int i=1;i<=n1;++i)addedge(S,1+i,1,0),addedge(1+i,S,0,0);
	for(int i=1;i<=n2;++i)addedge(1+n1+i,T,1,0),addedge(T,1+n1+i,0,0);
	for(int t=1;t<=m;++t){
		int u=read(),v=read();
		addedge(1+u,1+n1+v,1,t);
		addedge(1+n1+v,1+u,0,0);
	}
	for(int i=1;i<=19;++i){
		if(!bfs())break;
		if(1.0*(clock()-aa)/CLOCKS_PER_SEC>3.4)break;
		ans+=dinic(S,INT_MAX);
	}
	printf("%d\n",ans);
	vector<int>g;
	for(int i=2;i<=1+n1;++i)for(int j=hd[i];j;j=nxt[j]){
		if(c[j])continue;
		int dd=tt[j];
		if(dd<2+n1||dd>1+n+n1)continue;
		g.emplace_back(bb[j]);
	}
	sort(g.begin(),g.end());
	for(auto cu:g)printf("%d\n",cu);
	return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 2ms
memory: 22216kb

input:

3 2 4
1 1
2 1
3 1
3 2

output:

2
1
4

result:

ok answer: 2, maximum: 2

Test #2:

score: 0
Accepted
time: 2ms
memory: 22088kb

input:

20 20 20
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
10 10
11 11
12 12
13 13
14 14
15 15
16 16
17 17
18 18
19 19
20 20

output:

20
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

result:

ok answer: 20, maximum: 20

Test #3:

score: 0
Accepted
time: 0ms
memory: 22100kb

input:

1000 1000 10000
988 405
844 805
40 354
416 591
520 704
697 24
315 386
122 390
991 213
506 14
309 298
26 829
329 63
787 91
971 703
805 699
624 645
121 181
841 741
473 84
258 116
490 753
725 603
265 302
869 71
611 507
59 292
11 532
117 61
192 600
650 342
204 580
687 675
670 407
637 622
569 236
728 476...

output:

1000
1
2
3
4
7
8
11
12
13
16
21
24
27
28
29
30
31
32
36
37
38
39
40
41
44
45
47
48
49
51
53
55
58
59
60
62
63
65
66
68
69
70
71
74
75
76
80
81
83
84
88
92
94
95
96
98
99
103
104
105
106
109
113
114
122
123
128
132
133
134
137
138
142
143
145
147
150
151
153
154
157
164
171
173
178
179
182
184
187
19...

result:

ok answer: 1000, maximum: 1000

Test #4:

score: 0
Accepted
time: 1ms
memory: 22108kb

input:

100 2 200
40 1
22 2
75 2
79 1
27 2
11 1
7 1
64 1
21 1
57 2
47 1
4 2
61 2
37 1
8 2
32 2
84 1
63 1
67 1
86 2
88 2
73 1
17 1
94 2
44 2
19 2
16 1
33 2
92 1
24 2
100 2
18 2
85 1
7 2
43 1
82 2
15 2
88 1
91 1
65 1
69 1
36 1
6 2
23 2
58 1
59 1
64 2
38 1
72 1
99 1
76 1
11 2
2 2
98 1
66 2
77 1
47 2
98 2
52 2
...

output:

2
96
155

result:

ok answer: 2, maximum: 2

Test #5:

score: 0
Accepted
time: 2ms
memory: 22180kb

input:

1000 1000 1000
411 789
753 186
495 203
417 324
490 424
195 480
314 23
663 218
12 747
124 390
134 38
218 536
291 840
174 908
474 767
313 167
575 9
857 427
313 27
959 935
258 70
472 957
747 228
205 939
293 303
626 802
712 283
658 346
208 383
889 204
99 640
801 966
828 742
534 11
259 734
226 129
843 35...

output:

540
1
2
4
5
6
7
10
11
12
15
16
18
21
22
23
25
29
30
31
33
38
39
42
43
44
45
46
48
49
50
52
53
54
58
59
60
61
62
65
66
67
69
73
74
75
76
77
78
80
82
84
87
88
90
91
92
93
94
96
97
99
100
103
104
105
106
108
111
112
113
114
117
121
122
123
124
125
126
128
129
130
131
132
133
135
137
139
140
143
144
146...

result:

ok answer: 540, maximum: 540

Test #6:

score: 0
Accepted
time: 2ms
memory: 21988kb

input:

1000 2000 3000
143 619
571 526
215 1074
6 1714
370 937
120 784
134 1671
722 1528
397 345
464 401
198 589
283 564
212 232
527 286
237 1649
413 1570
964 1731
194 645
639 735
182 656
641 1143
535 98
113 596
787 972
306 818
657 1202
321 1327
753 1088
122 1823
471 611
516 811
380 1548
872 973
509 1841
70...

output:

944
1
2
3
4
5
6
7
10
11
13
15
16
17
18
19
20
22
23
24
26
27
28
29
31
32
34
35
36
39
40
41
42
43
44
45
46
47
48
50
51
52
53
54
58
60
61
62
63
64
65
66
68
70
71
72
73
75
76
77
78
79
80
81
84
85
86
88
89
91
92
93
94
95
96
97
98
99
100
101
104
105
106
108
109
110
113
115
117
118
120
122
123
124
125
126
...

result:

ok answer: 944, maximum: 944

Test #7:

score: 0
Accepted
time: 3571ms
memory: 292808kb

input:

2000000 2000000 2000000
1203137 1030076
215220 238101
293102 491863
1260446 165178
1683989 1718181
1641329 1179380
708733 403707
1918936 574923
525651 11571
1169951 422281
1086376 303530
1286459 1692862
31854 394688
916288 273853
709758 1176923
1730408 1766172
1890708 588004
344339 283448
1676753 13...

output:

1085442
1
2
4
7
9
10
12
13
14
18
19
22
23
25
27
29
30
31
33
34
35
36
38
39
40
42
43
44
45
46
48
55
56
57
58
59
60
61
62
63
65
66
67
68
69
71
72
73
74
75
77
78
79
81
83
87
88
89
90
91
92
93
95
96
97
99
100
102
103
105
107
109
110
111
114
116
119
120
121
123
124
125
128
129
130
131
132
133
134
135
136...

result:

ok answer: 1085442, maximum: 1088264

Test #8:

score: 0
Accepted
time: 3636ms
memory: 293008kb

input:

2000000 2000000 2000000
1286561 1611624
1028477 1867578
1642356 1162128
1032429 316462
618144 22363
1644873 1514932
508824 1230141
1889259 22840
30270 259129
1567969 462330
150124 1227115
393968 534541
1378415 770304
977805 1666010
1199878 1476793
1249634 243739
1232999 531436
1146447 1845344
478779...

output:

1085157
1
2
3
4
5
6
8
9
11
13
14
15
17
18
19
20
22
23
24
25
30
37
38
39
40
41
42
43
44
45
46
47
48
49
51
52
53
54
55
56
59
60
62
64
65
66
67
68
72
74
75
76
77
80
83
84
86
88
89
91
93
98
100
101
102
104
105
107
108
109
112
113
114
115
116
117
122
123
125
126
127
128
130
131
133
134
135
137
138
139
14...

result:

ok answer: 1085157, maximum: 1088048

Test #9:

score: 0
Accepted
time: 3648ms
memory: 292936kb

input:

2000000 2000000 2000000
402689 127765
1065927 1753952
991609 1640904
1061308 533154
1552300 326545
1905312 1074675
1084722 1799678
51070 1470757
310696 763584
1965988 759275
246577 1374893
277285 408924
1692272 1856320
72026 1123575
1881487 1519767
1993052 1562521
575291 1507572
205452 248456
134621...

output:

1085015
3
5
7
8
10
11
12
14
15
17
19
22
24
25
26
27
29
30
31
32
33
35
38
39
40
41
42
44
46
47
49
50
51
53
55
56
58
59
61
62
66
67
70
73
74
76
77
78
79
80
81
83
84
85
87
89
90
91
93
95
96
97
98
99
100
101
102
103
105
106
107
109
111
113
115
116
118
119
120
121
122
123
124
125
126
127
128
130
131
134
...

result:

ok answer: 1085015, maximum: 1087919

Test #10:

score: 0
Accepted
time: 3576ms
memory: 292808kb

input:

2000000 2000000 2000000
486113 452417
846481 1383429
1116671 119681
1800588 1717142
294967 630728
1198456 1601715
884812 626111
1054097 142866
782611 1978438
1396710 1832027
534517 555375
417499 1250604
6129 166529
1166247 772627
371607 1819638
1512279 1072791
884878 1451005
1974857 843056
213647 10...

output:

1085054
1
2
3
4
5
8
9
11
12
13
14
16
17
18
19
20
21
24
26
28
30
31
32
37
38
39
41
42
43
44
45
46
47
50
55
56
58
59
60
61
62
64
65
66
67
69
71
72
73
74
75
76
77
78
79
80
85
87
89
90
91
94
95
96
97
98
100
101
102
103
104
105
106
107
108
110
111
112
114
115
117
118
119
120
121
122
123
124
125
126
127
1...

result:

ok answer: 1085054, maximum: 1088039

Test #11:

score: 0
Accepted
time: 3564ms
memory: 292844kb

input:

2000000 2000000 2000000
569537 968557
1851226 45611
465925 789946
605275 1868426
261827 934910
1458895 1161459
684902 1195648
1215908 623487
30333 482892
827432 1096268
1598266 1478961
1525008 349179
385394 476737
1227764 164784
85919 119508
255697 326166
1970273 1394437
1809670 1180760
1015672 2547...

output:

1085263
1
2
4
5
6
8
9
11
13
15
17
18
19
20
22
23
24
25
26
27
29
30
31
33
36
37
38
39
40
41
42
43
45
47
48
50
51
52
53
54
55
56
58
59
60
61
62
63
64
66
67
68
69
71
72
73
74
78
79
81
82
84
85
88
89
91
92
93
94
95
97
98
99
103
106
107
109
110
112
113
114
115
116
118
120
121
122
123
124
125
126
128
130
...

result:

ok answer: 1085263, maximum: 1088084

Test #12:

score: -100
Time Limit Exceeded

input:

2000000 2000000 2000000
1685665 517402
664484 1675089
782474 1268723
1601450 85118
1195982 1239092
752039 721202
484993 1054786
218935 71404
310760 730450
1225450 1393213
662014 594034
632517 223562
699251 595457
321985 846541
576040 1386674
1774923 1836436
1312564 1337869
868675 808065
1107298 1517...

output:

1086541
1
2
4
6
7
8
14
15
17
18
20
21
22
23
24
27
30
32
33
36
38
39
41
42
44
45
47
48
51
52
54
55
57
58
60
61
62
63
64
66
67
68
70
72
74
75
76
77
81
86
87
89
90
94
95
97
98
99
100
103
107
108
109
110
111
112
113
116
117
118
123
128
129
130
132
133
135
137
138
142
145
147
148
150
151
153
154
155
157
...

result: