QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#368019#7977. 彩虹航线RedreamMer3 1276ms47824kbC++202.7kb2024-03-26 18:35:392024-03-26 18:35:39

Judging History

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

  • [2024-03-26 18:35:39]
  • 评测
  • 测评结果:3
  • 用时:1276ms
  • 内存:47824kb
  • [2024-03-26 18:35:39]
  • 提交

answer

// #pragma GCC optimize("O3")
#pragma GCC optimize("Ofast")
#pragma GCC optimize("unroll-loops")
// #pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,avx2,tune=native")
#include <bits/stdc++.h>
using namespace std;

#define PB emplace_back
#define int long long
#define ll long long
#define vi vector<int>
#define siz(a) ((int) ((a).size()))
#define rep(i, a, b) for (int i = (a); i <= (b); ++i)
#define per(i, a, b) for (int i = (a); i >= (b); --i)
void print(vi n) { rep(i, 0, siz(n) - 1) cerr << n[i] << " \n"[i == siz(n) - 1]; }

const int N = 150, M = 1e6;
int a, b, c, ans[N * N + 5];
struct pii {
	int x, y;
} s[N * N + 5];
vi st[M + 5];

struct FLOW {
	static const int N = 4e6, inf = 1e9;
	int head[N + 5], S, T, dep[N + 5], cur[N + 5], top;
	struct road {
		int lst, v, val;
	} s[N + 5];
	void init(int n) {
		S = n + 1, T = n + 2;
		rep(i, 1, T) head[i] = 0;
		top = 1;
	}
	inline void add(int l1, int l2, int l3) {
		s[++top] = (road) {head[l1], l2, l3};
		head[l1] = top;
		s[++top] = (road) {head[l2], l1, 0};
		head[l2] = top;
	}
	inline bool bfs() {
		rep(i, 0, T) dep[i] = 0, cur[i] = head[i];
		queue<int> qu;
		qu.push(S);
		dep[S] = 1;
		while (!qu.empty()) {
			int u = qu.front();
			qu.pop();
			for (int i = head[u]; i; i = s[i].lst) {
				int v = s[i].v;
				if (dep[v] || !s[i].val) continue;
				dep[v] = dep[u] + 1;
				qu.push(v);
			}
		}
		return dep[T];
	}
	inline int dfs(int n, int mx) {
		if (n == T) return mx;
		int res = 0;
		for (int i = cur[n]; i; i = s[i].lst) {
			cur[n] = i;
			int v = s[i].v;
			if (dep[v] != dep[n] + 1 || !s[i].val) continue;
			int tmp = dfs(v, min(mx, s[i].val));
			s[i].val -= tmp;
			s[i ^ 1].val += tmp;
			res += tmp;
			mx -= tmp;
			if (!mx) break;
		}
		if (!res) dep[n] = -1;
		return res;
	}
	inline int dinic() {
		int res = 0;
		while (bfs()) res += dfs(S, inf);
		return res;
	}
} S;

signed main() {
	// freopen(".in", "r", stdin);
	// freopen(".out", "w", stdout);
	ios::sync_with_stdio(0);
	cin.tie(0), cout.tie(0);
	cin >> a >> b >> c;
	int x;
	rep(i, 1, b) {
		cin >> s[i].x >> s[i].y;
		rep(j, 1, c) cin >> x, st[x].PB(i);
	}
	int cnt = 0;
	per(i, M, 1) {
		S.init(a + a);
		rep(j, 1, a) S.add(S.S, j, 1), S.add(j + a, S.T, 1);
		for(int x : st[i]) if(!ans[x]) S.add(s[x].x, s[x].y + a, 1);
		cnt += S.dinic();
		for(int x : st[i]) {
			for(int j = S.head[s[x].x]; j; j = S.s[j].lst) {
				if(S.s[j].v == s[x].y + a && !S.s[j].val) {
					ans[x] = i;
				}
			}
		}
	}
	// cerr << cnt << endl;
	assert(cnt == b);
	rep(i, 1, b) cout << ans[i] << ' ';
	return cerr << endl << 1.0 * clock() / CLOCKS_PER_SEC << endl, 0;
}

詳細信息

Subtask #1:

score: 1
Accepted

Test #1:

score: 1
Accepted
time: 1268ms
memory: 10088kb

input:

150 150 1
144 5 1
141 54 1
26 120 1
148 68 1
136 62 1
114 1 1
33 136 1
85 100 1
97 124 1
84 66 1
107 81 1
82 135 1
112 44 1
20 89 1
50 32 1
52 94 1
89 88 1
3 57 1
130 23 1
140 150 1
96 37 1
122 38 1
41 63 1
99 85 1
13 95 1
142 47 1
95 4 1
69 17 1
27 119 1
73 93 1
108 43 1
54 18 1
37 76 1
67 114 1
40...

output:

1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 

result:

ok construction is correct.

Test #2:

score: 0
Accepted
time: 1256ms
memory: 10020kb

input:

150 150 1
117 132 96
147 4 114
67 57 60
62 94 20
48 117 68
31 144 27
19 44 121
3 51 92
83 52 67
26 125 56
8 124 75
125 31 52
79 8 21
132 14 136
77 111 45
134 136 145
129 73 85
122 92 143
59 76 36
60 127 115
102 126 133
10 106 32
93 35 106
75 47 102
45 140 41
44 108 146
25 98 106
140 116 76
143 3 87
...

output:

96 114 60 20 68 27 121 92 67 56 75 52 21 136 45 145 85 143 36 115 133 32 106 102 41 146 106 76 87 90 116 15 147 51 35 85 15 83 43 105 89 12 89 140 103 114 135 78 93 80 87 93 19 7 125 132 96 96 99 48 1 63 3 6 146 116 48 9 126 6 106 64 74 84 16 23 119 51 7 83 96 56 94 97 27 15 51 106 95 32 70 103 75 8...

result:

ok construction is correct.

Test #3:

score: 0
Accepted
time: 1276ms
memory: 10080kb

input:

150 10 1
35 145 1
145 88 2
130 14 1
111 142 1
138 99 1
76 73 1
101 79 1
147 137 2
65 64 1
108 8 2

output:

1 2 1 1 1 1 1 2 1 2 

result:

ok construction is correct.

Subtask #2:

score: 2
Accepted

Test #4:

score: 2
Accepted
time: 883ms
memory: 47824kb

input:

75 5625 150
11 6 680849 150419 731361 419631 223710 806977 837589 529911 568337 456216 515190 302854 672904 388629 548276 803173 770491 610684 550790 786097 253610 446581 705772 610053 637171 567249 365794 571846 431219 213414 466432 53255 748825 765338 761154 556712 159152 463622 706471 49434 59624...

output:

841551 843613 840985 841880 838461 839500 836112 821235 842037 839867 817785 828723 833927 840441 841742 838156 842840 837357 843339 831100 839028 840877 836811 834985 841656 842810 835175 842217 842267 837753 839265 836812 840225 833004 842403 843107 842216 837635 835176 838225 838412 831443 837164...

result:

ok construction is correct.

Test #5:

score: 0
Accepted
time: 746ms
memory: 21296kb

input:

75 5625 150
55 59 136 110 80 141 34 72 121 2 116 38 39 16 56 20 147 81 58 64 24 83 73 30 127 97 128 35 77 96 54 21 106 57 32 115 133 84 50 103 94 45 68 53 31 8 55 44 89 41 36 150 3 28 9 98 66 49 119 101 114 112 82 11 22 124 134 107 105 90 88 145 87 135 26 79 37 122 10 15 104 27 18 120 7 13 46 139 40...

output:

77 76 99 76 76 76 76 77 76 77 76 124 83 91 76 76 115 78 77 78 85 80 76 78 77 76 78 77 90 77 78 80 77 77 77 76 77 78 78 76 78 77 76 79 87 76 77 79 76 77 77 77 79 80 79 91 79 77 77 76 82 83 83 77 77 78 76 80 100 77 76 76 76 77 118 85 76 76 78 85 81 76 84 82 77 76 76 79 88 78 76 77 78 79 107 79 77 83 7...

result:

ok construction is correct.

Test #6:

score: 0
Accepted
time: 772ms
memory: 35232kb

input:

75 3750 150
1 29 15545 372923 77579 125076 509966 151564 332286 414939 296369 227609 9580 52174 99587 224186 2679 309545 38096 115252 281893 44718 259941 187595 500086 197842 267668 399469 254416 114691 268905 112134 257669 210411 135373 423915 537194 17707 204354 99757 234452 307155 82087 64190 309...

output:

561272 562223 559931 560577 552771 560710 561600 560272 560343 558727 558884 561339 553781 561371 562232 561837 557596 562019 558209 558004 558602 560097 558041 560053 561930 560137 559372 559036 561901 560706 553083 561222 562031 557008 559654 560476 556604 544524 556652 552511 561972 559397 558958...

result:

ok construction is correct.

Test #7:

score: 0
Accepted
time: 692ms
memory: 15320kb

input:

75 3750 150
43 71 86 127 132 6 139 123 83 37 85 103 52 102 4 148 111 34 110 66 42 130 150 149 53 45 137 129 2 5 87 79 146 47 9 98 96 54 17 126 81 115 7 105 117 119 101 144 74 23 44 19 84 97 50 13 22 94 78 63 134 40 142 76 109 95 12 138 112 72 136 24 77 31 32 118 124 135 68 104 16 1 93 106 128 51 20 ...

output:

99 110 100 99 114 111 100 110 104 99 98 94 120 98 134 100 105 101 92 97 108 109 99 107 142 97 94 105 100 107 107 100 107 109 99 108 122 108 104 119 102 103 104 96 106 110 102 105 110 102 104 107 110 104 102 106 99 109 99 111 111 105 107 114 98 106 109 102 101 133 103 110 140 118 101 103 104 102 104 ...

result:

ok construction is correct.

Subtask #3:

score: 0
Runtime Error

Test #8:

score: 11
Accepted
time: 1254ms
memory: 10272kb

input:

150 300 2
81 6 1 2
64 88 1 2
5 76 2 1
22 9 2 1
32 142 1 2
97 32 2 1
18 87 1 2
146 100 2 1
56 139 1 2
61 109 2 1
124 105 2 1
126 145 1 2
16 19 1 2
16 138 2 1
131 111 2 1
145 111 2 1
59 59 2 1
89 43 1 2
2 38 1 2
63 149 2 1
46 48 1 2
140 131 1 2
86 10 2 1
116 40 1 2
123 38 2 1
75 109 2 1
131 142 1 2
9 ...

output:

1 1 1 1 1 2 1 1 2 1 2 2 2 1 1 2 2 1 1 1 2 2 2 1 2 2 2 2 1 2 2 1 1 1 1 1 2 2 1 2 2 1 2 2 2 1 2 1 1 1 1 2 2 2 2 2 1 2 1 1 1 2 1 2 2 1 2 1 1 2 2 2 2 1 1 1 2 1 2 1 1 2 1 2 1 2 2 2 1 2 2 1 2 1 1 2 2 2 2 2 1 2 1 2 1 2 1 2 1 1 1 1 1 2 1 2 2 1 2 1 2 2 1 1 2 1 2 1 2 2 1 1 1 1 1 1 2 2 1 2 1 1 1 1 1 2 1 2 2 1 ...

result:

ok construction is correct.

Test #9:

score: -11
Runtime Error

input:

150 300 2
60 122 3 1
114 17 2 1
21 19 3 1
134 75 3 1
64 81 2 1
52 33 1 3
45 27 1 2
148 91 2 1
110 100 1 2
100 74 2 3
53 130 3 2
59 19 3 1
149 108 3 1
19 92 1 3
85 66 3 2
80 89 3 2
16 4 2 3
39 90 2 3
53 102 3 1
20 21 3 1
21 112 1 3
76 98 1 2
7 130 3 1
140 129 2 3
139 100 3 1
127 77 1 3
136 113 3 2
54...

output:


result:


Subtask #4:

score: 0
Time Limit Exceeded

Test #18:

score: 0
Time Limit Exceeded

input:

149 22201 150
106 24 20 90 56 109 85 33 76 25 97 77 134 75 15 24 88 16 93 126 43 94 116 120 28 130 21 140 70 111 71 32 29 41 132 39 84 62 27 92 55 117 129 125 127 104 74 114 14 145 36 121 22 69 68 133 59 65 58 148 131 40 54 118 110 3 61 105 4 112 142 122 73 37 1 113 45 87 57 89 103 98 100 63 146 106...

output:


result:


Subtask #5:

score: 0
Time Limit Exceeded

Test #23:

score: 0
Time Limit Exceeded

input:

150 22500 150
117 116 91 74 113 95 110 26 141 115 38 66 71 138 17 83 112 99 149 18 3 44 15 28 53 114 96 37 7 145 20 109 80 19 117 16 63 27 42 137 135 132 14 39 1 148 147 30 68 126 12 32 57 67 119 139 124 46 133 24 36 51 69 88 131 60 86 140 102 29 100 150 35 123 84 85 90 105 75 45 77 143 130 127 98 7...

output:


result:


Subtask #6:

score: 0
Runtime Error

Test #29:

score: 28
Accepted
time: 1258ms
memory: 12024kb

input:

150 450 3
57 22 2 1 3
142 57 1 3 2
138 113 3 1 2
13 77 2 3 1
43 112 1 2 3
82 99 2 1 3
66 65 3 1 2
3 31 2 1 3
24 146 3 2 1
127 18 2 3 1
125 37 1 2 3
13 137 1 2 3
105 127 1 3 2
54 20 1 2 3
48 15 3 1 2
23 71 2 3 1
30 28 1 2 3
125 146 1 3 2
68 120 2 1 3
38 92 2 1 3
101 100 1 3 2
81 28 1 3 2
70 7 1 2 3
1...

output:

1 2 1 3 2 1 2 3 3 2 1 1 1 2 2 3 1 2 1 1 3 3 1 3 3 1 1 1 2 1 1 2 2 3 1 1 1 3 1 2 2 3 2 1 3 3 1 3 3 1 1 3 1 1 1 3 3 2 2 2 2 1 3 1 2 1 1 3 2 1 2 1 2 1 2 1 3 2 2 3 1 1 3 2 2 2 1 2 1 1 1 1 1 2 1 2 2 2 2 3 2 2 2 3 1 2 3 2 1 1 3 1 2 3 2 1 1 2 1 1 2 1 3 1 3 3 3 1 1 3 1 2 1 3 2 3 1 3 2 3 1 3 3 3 1 2 3 2 1 1 ...

result:

ok construction is correct.

Test #30:

score: 0
Accepted
time: 1270ms
memory: 10208kb

input:

150 450 3
148 73 905 1007 1204
72 13 614 952 114
72 3 1026 931 764
33 21 1143 204 536
19 112 694 1261 734
104 68 1057 72 1249
83 66 311 147 656
141 5 1349 1317 700
12 113 331 375 1165
49 7 1114 1149 1224
79 41 531 46 712
128 20 630 1175 399
35 74 421 1148 608
57 124 840 108 1238
63 22 922 403 203
35...

output:

1204 952 1026 1143 1261 1249 656 1349 1165 1224 712 1175 1148 1238 922 1032 910 379 198 1180 1154 567 1210 654 939 1258 1321 885 1233 1276 1240 1288 767 1137 435 1007 1201 1088 628 1286 1173 1012 954 848 911 1184 381 1217 1254 1218 894 1321 1236 1150 1314 1196 1209 670 824 1317 250 1316 1336 1294 13...

result:

ok construction is correct.

Test #31:

score: -28
Runtime Error

input:

150 450 3
111 66 3 4 1
62 51 3 2 4
117 58 3 4 1
54 105 1 3 4
40 108 3 1 4
104 112 2 4 1
131 73 4 3 1
109 30 1 4 3
36 130 3 4 2
40 70 2 3 1
24 112 3 1 4
44 119 4 1 2
39 91 1 4 3
28 118 1 2 3
8 117 2 4 1
110 109 3 1 4
99 20 4 1 2
131 49 4 1 2
130 114 1 4 3
133 57 3 1 2
41 125 1 3 4
21 65 1 2 3
144 143...

output:


result: