QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#115321 | #6329. Colorful Graph | xaphoenix# | WA | 1027ms | 10908kb | C++14 | 3.8kb | 2023-06-25 17:06:55 | 2023-06-25 17:06:55 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;
#define fi first
#define se second
#define mp make_pair
#define pb push_back
#define pf push_front
#define LC k<<1
#define RC k<<1|1
#define IO cin.sync_with_stdio(false); cin.tie(0); cout.tie(0);
#define all(x) (x).begin(), (x).end()
#define SZ(x) ((int)(x).size())
#define rep(i,a,n) for (int i = a; i < n; i++)
#define repn(i,a,n) for (int i = a; i <= n; i++)
#define per(i,a,n) for (int i = (n) - 1; i >= a; i--)
#define pern(i,a,n) for (int i = n; i >= a; i--)
typedef long long LL;
typedef long double LD;
typedef unsigned long long ull;
typedef pair<int, int> PII;
typedef pair<int, LL> PIL;
typedef pair<LL, int> PLI;
typedef pair<double, double> PDD;
typedef pair<ull, ull> PUU;
typedef pair<LL, LL> PLL;
const int N = 21000;
const int M = 510000;
const int mod = 1e9+7;
const int inf = (int)1e9;
const LL INF = 1e18;
const double eps = 1e-9;
mt19937_64 Rand((unsigned long long)new char);
#define rand Rand
int n, m;
int dfn[N], low[N], instack[N], scc[N], cnt, scc_cnt;
stack<int> st;
vector<int> g[N];
void tarjan(int x) {
dfn[x] = low[x] = ++cnt;
st.push(x);
instack[x] = 1;
for (auto y: g[x]) {
if (dfn[y] == 0) {
tarjan(y);
low[x] = min(low[x], low[y]);
}
else if (instack[y]) low[x] = min(low[x], dfn[y]);
}
if (low[x]==dfn[x]) {
++scc_cnt;
while (!st.empty() && st.top() != x) {
scc[st.top()] = scc_cnt;
instack[st.top()] = 0;
st.pop();
}
st.pop();
scc[x] = scc_cnt;
instack[x] = 0;
}
}
int fa[N], col[N];
int ans[N], que[N], tail, tot;
int find(int x) {
return fa[x] == x? x: fa[x] = find(fa[x]);
}
struct MCMF {
// bfs, dinic
// st must be the lowest index, ed must be the highest index
int e[M], f[M], pre[M], last[N];
int d[N], now[N];
int num, st, ed, maxflow;
queue<int> q;
int left, right;
void init() {
num = 1;
repn(i, st, ed) last[i] = 0;
maxflow = 0;
}
void insert(int x, int y, int z) {
e[++num] = y, f[num] = z, pre[num] = last[x], last[x] = num;
e[++num] = x, f[num] = 0, pre[num] = last[y], last[y] = num;
}
bool bfs() {
memset(d, -1, sizeof(d));
d[st] = 0;
q.push(st);
while(!q.empty()) {
int now = q.front();
for (int i = last[now]; i; i = pre[i]) if (f[i] && d[e[i]] == -1) {
d[e[i]] = d[now] + 1;
q.push(e[i]);
}
q.pop();
}
if (d[ed] == -1) return 0;
return 1;
}
int dfs(int x, int incf) {
if (x == ed) return incf;
int flow = 0, w;
for (int i = now[x]; i; i = pre[i]) if (f[i] && d[e[i]] == d[x] + 1) {
w = dfs(e[i], min(incf - flow, f[i]));
f[i] -= w, f[i ^ 1] += w; flow += w;
if (f[i]) now[x] = i;
if (flow == incf) {
if (x == st) left = (e[i] + 1) / 2;
if (e[i] == ed) right = (x + 1) / 2;
return incf;
}
}
if (!flow) d[x] = -1;
return flow;
}
void run() {
while(bfs()) {
repn(i, st, ed) now[i] = last[i];
maxflow += dfs(st, 1);
int fx = find(left), fy = find(right);
fa[fx] = fy;
}
}
}solver;
int main() {
IO;
cin >> n >> m;
repn(i, 1, m) {
int x, y;
cin >> x >> y;
g[x].pb(y);
}
repn(i, 1, n) if (dfn[i] == 0) tarjan(i);
solver.st = 0, solver.ed = scc_cnt * 2 + 1;
solver.init();
repn(i, 1, scc_cnt) {
solver.insert(0, i * 2 - 1, 1), solver.insert(i * 2, scc_cnt * 2 + 1, 1);
solver.insert(i * 2, i * 2 - 1, n);
}
repn(x, 1, n) for (auto y: g[x]) {
if (scc[x] == scc[y]) continue;
solver.insert(2 * scc[x] - 1, 2 * scc[y], n);
}
repn(i, 1, scc_cnt) fa[i] = i;
solver.run();
repn(i, 1, scc_cnt) if (!ans[find(i)]) ans[find(i)] = ++tot;
repn(i, 1, n) cout << ans[find(scc[i])] << " \n"[i == n];
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 0ms
memory: 8180kb
input:
5 5 1 4 2 3 1 3 2 5 5 1
output:
2 2 2 1 2
result:
ok AC
Test #2:
score: 0
Accepted
time: 2ms
memory: 10056kb
input:
5 7 1 2 2 1 4 3 5 1 5 4 4 1 4 5
output:
1 1 2 1 1
result:
ok AC
Test #3:
score: 0
Accepted
time: 2ms
memory: 8240kb
input:
8 6 6 1 3 4 3 6 2 3 4 1 6 4
output:
1 1 1 1 2 1 3 4
result:
ok AC
Test #4:
score: 0
Accepted
time: 816ms
memory: 10776kb
input:
7000 6999 4365 4296 2980 3141 6820 4995 4781 24 2416 5844 2940 2675 3293 2163 3853 5356 262 6706 1985 1497 5241 3803 353 1624 5838 4708 5452 3019 2029 6161 3849 4219 1095 1453 4268 4567 1184 1857 2911 3977 1662 2751 6353 6496 2002 6628 1407 4623 425 1331 4445 4277 1259 3165 4994 1044 2756 5788 5496 ...
output:
1552 1657 1326 1564 1139 557 744 1365 1110 1505 1597 46 1040 129 1519 963 516 926 1061 25 1257 585 296 1498 1662 1577 795 843 1404 33 1171 1198 231 846 1357 1358 286 1355 1513 1459 1525 1158 1443 534 326 687 1643 258 1438 337 890 950 1292 726 1647 187 205 377 1031 123 1192 1092 1045 439 158 199 467 ...
result:
ok AC
Test #5:
score: 0
Accepted
time: 640ms
memory: 10300kb
input:
7000 6999 4832 1603 5984 6985 5355 3687 6007 2170 5984 3486 3267 2189 538 2123 4343 4553 5855 6168 5984 257 4239 2304 5984 2063 3298 1869 5984 6353 5984 2018 5984 5387 5984 3382 3164 3978 2690 2816 4810 2638 5984 3773 5984 1634 5984 2786 5984 3671 5984 5140 2943 5721 5984 414 1105 4060 3093 796 5984...
output:
587 1022 618 465 1723 1128 886 671 2105 91 179 1781 1663 1274 2267 2308 1331 367 589 2330 1863 1713 2095 1232 1030 451 848 1896 782 1568 1664 548 1391 1090 1282 1645 1371 1516 117 135 2142 237 1187 1756 1846 417 21 776 1938 1573 18 1533 2303 204 1811 1450 2320 2029 1324 722 1899 696 641 181 805 1558...
result:
ok AC
Test #6:
score: 0
Accepted
time: 651ms
memory: 10908kb
input:
7000 6999 1649 5337 1701 3344 4394 2172 3330 39 5932 1141 5381 5340 5453 3300 125 2172 6810 5263 804 2172 6635 2172 676 4740 3015 1183 1710 5769 611 5915 3419 1581 2094 2172 4508 2172 6604 2433 6113 1466 1604 696 1518 1123 1287 2940 4825 2172 5130 4524 2693 2172 106 2172 5157 2172 3693 2172 5198 217...
output:
1176 1175 464 319 2256 1174 165 1084 1720 1177 1209 1173 1178 1456 1755 529 1172 385 1158 1690 1683 1171 1179 1446 1840 266 1643 413 1180 1170 1792 1181 1334 1621 1410 1169 1970 421 94 1182 2126 2073 1741 1168 1998 1177 1705 303 1167 2298 377 1183 1672 1538 1695 323 2043 1184 583 2329 1166 2282 1165...
result:
ok AC
Test #7:
score: 0
Accepted
time: 694ms
memory: 9160kb
input:
7000 6999 2896 6321 881 2623 5058 2623 4833 2623 4669 2623 4781 5007 1447 2623 4781 4768 4781 3834 2758 4792 797 5055 3784 2623 4781 5510 6606 3040 597 3459 4136 2037 1291 3989 4781 837 4781 4379 5637 2053 1642 2665 4781 4664 4781 952 4924 2511 4781 4201 4781 2352 4781 5362 3901 197 137 2623 2706 19...
output:
1 1750 1750 1750 1750 1750 1750 2 354 3 1750 1750 1750 1750 1750 1443 1548 1750 1750 4 1345 1750 795 607 1367 1504 1428 1007 5 6 1750 7 1750 1750 1750 1750 1536 226 1750 699 1750 1750 879 1750 8 1750 9 1750 10 1750 1750 1750 11 12 1750 13 1750 1750 783 1750 14 1750 1750 113 1750 15 272 1499 1750 174...
result:
ok AC
Test #8:
score: 0
Accepted
time: 361ms
memory: 10508kb
input:
6999 6998 1269 3969 1269 2429 1269 2609 1269 2515 1269 6166 1269 6614 3108 1269 2105 1269 4670 1269 578 1269 4661 1269 1421 1269 2576 1269 6152 1269 1269 6636 3011 1269 305 1269 5189 1269 1683 1269 6861 1269 1269 5798 1499 1269 282 1269 914 1269 80 1269 677 1269 701 1269 1269 359 6521 1269 1269 1754...
output:
1 2 3 4 1073 5 6 2667 1045 3245 3304 2946 7 434 8 9 10 976 11 12 125 13 14 2692 15 16 17 18 19 1675 20 1067 21 22 3194 23 1614 459 24 515 971 25 26 1204 3088 27 28 29 30 31 2522 1552 3493 32 263 2395 33 34 35 36 37 577 20 38 3396 2833 3337 39 40 41 525 42 730 1745 2103 43 44 2792 45 46 2095 47 2380 ...
result:
ok AC
Test #9:
score: 0
Accepted
time: 2ms
memory: 10400kb
input:
7000 0
output:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 ...
result:
ok AC
Test #10:
score: 0
Accepted
time: 630ms
memory: 9208kb
input:
7000 6999 3138 1903 3285 5919 6182 1430 1164 961 1577 6445 1390 3384 935 5723 6614 6387 4799 2877 3915 5128 5366 5455 2287 3941 2053 2326 4022 6993 488 2922 4327 4701 4674 3221 1666 4773 4356 3232 3888 937 4318 6942 577 1299 4491 1938 5154 1254 790 5532 4286 5478 2918 6725 2853 304 2554 5207 5140 77...
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 AC
Test #11:
score: 0
Accepted
time: 103ms
memory: 9188kb
input:
7000 6999 33 3147 5877 4807 3116 4168 1651 2456 624 1740 6440 3058 6414 489 1023 2523 706 93 5523 598 4211 6063 3570 6840 6566 2971 6614 1907 5893 4389 4022 2527 5096 2345 4682 2134 188 5597 695 4285 1344 3832 3534 879 6574 6252 3759 3444 2167 85 5630 6600 3158 4404 6389 689 4871 6719 4295 6008 3437...
output:
23 29 1 1 19 19 1 7 1 1 1 1 1 30 1 7 1 25 1 1 14 1 29 1 1 1 1 1 1 1 1 1 31 1 1 7 34 33 1 1 1 19 16 1 12 1 14 1 1 7 1 1 1 1 1 7 1 1 1 35 14 34 34 1 1 1 1 13 29 1 5 29 1 1 19 1 20 13 29 1 23 15 1 1 3 6 1 1 15 1 29 1 1 1 1 17 36 1 3 1 1 1 1 33 1 1 25 1 1 20 1 1 1 23 33 1 29 1 1 1 1 20 13 1 33 1 1 1 1 3...
result:
ok AC
Test #12:
score: 0
Accepted
time: 77ms
memory: 10488kb
input:
7000 6999 1247 5150 3318 2013 5686 1615 6145 6521 5717 94 2787 3443 2648 4875 5332 5934 1897 1651 4640 2183 1750 6964 148 5228 745 2814 474 1165 496 6735 180 3412 2723 3374 6200 4361 497 5328 1928 5998 5648 1261 5090 4723 1715 706 2499 897 6569 6204 6039 2787 2882 5044 5767 4256 975 1877 1857 4453 6...
output:
1 44 1 15 1 1 46 1 80 1 65 23 79 1 1 17 1 1 1 1 1 1 1 1 1 1 3 1 69 81 1 1 1 1 1 1 56 1 77 1 1 1 63 1 1 15 1 1 1 32 30 82 1 1 1 1 1 49 65 1 15 50 1 1 1 23 1 1 71 67 1 83 69 1 1 1 1 1 60 13 1 1 1 1 1 15 1 1 1 1 71 1 1 1 26 1 1 1 1 1 32 1 1 71 15 1 1 63 1 17 3 1 1 67 1 33 1 1 70 1 1 71 1 16 1 1 1 73 1 ...
result:
ok AC
Test #13:
score: 0
Accepted
time: 343ms
memory: 10848kb
input:
7000 6999 2349 199 5295 2831 6143 2006 3212 3198 6956 3807 732 4838 5069 1027 5744 3479 6 5301 5687 4452 4201 1151 1353 4884 548 3506 6094 4799 4950 6939 5234 817 652 1314 979 6984 5771 1851 398 1322 2294 4298 847 3929 6833 183 2904 6745 4797 3874 94 315 4282 582 6591 5037 962 147 799 908 2593 5547 ...
output:
1 2 341 1 1 17 8 433 574 254 28 1 102 487 178 1 546 179 379 489 117 1 1 89 378 1 1 464 137 1 436 150 195 224 1 72 1 112 259 34 311 1 22 533 1 313 230 1 1 292 163 184 457 569 264 575 254 406 472 131 1 1 324 1 1 352 341 417 201 476 1 1 1 1 102 1 350 1 484 124 1 1 1 210 576 72 1 210 1 299 39 261 1 577 ...
result:
ok AC
Test #14:
score: 0
Accepted
time: 561ms
memory: 9112kb
input:
7000 6999 3409 1629 2076 6412 4997 1078 6320 626 4501 1104 4173 1774 5507 2375 2299 5115 4321 127 1192 6635 1909 3398 2972 499 862 5024 421 2931 861 1536 902 3813 659 4514 1843 3035 3669 1228 1724 1880 34 706 133 3468 6116 585 5073 1461 5667 3405 715 4834 6915 3007 1736 6108 3264 2870 2393 6474 2108...
output:
1107 1 1108 803 1 1109 204 1 363 671 975 836 1 985 1111 534 592 1 717 133 1 702 1 359 1112 1 1113 1114 1115 1116 1 1117 1 1118 1203 465 539 1204 715 904 738 1205 1206 1254 1 574 1122 724 1273 822 833 185 1 136 1 1274 860 1093 79 893 42 1 126 601 623 1275 582 1276 826 1277 1278 477 1279 1280 1198 128...
result:
ok AC
Test #15:
score: -100
Wrong Answer
time: 1027ms
memory: 10060kb
input:
7000 7000 2048 5882 6801 2408 3225 2608 1441 5079 497 6253 557 5589 2535 6257 4800 2595 4713 1286 4759 6636 4303 4296 6195 2048 6994 2987 1249 3044 1036 10 6472 2076 1996 1086 1279 1486 6100 369 4797 3437 2493 4576 2944 5601 197 5582 5488 5035 4023 659 2651 5024 2257 5710 1001 3941 446 4815 687 702 ...
output:
1 2 18 19 20 27 37 38 39 42 44 45 46 60 102 104 256 270 272 47 273 274 276 182 279 280 308 315 317 319 397 403 405 411 293 413 415 421 422 423 369 162 426 371 428 430 431 350 147 434 435 419 129 438 441 417 442 30 419 220 454 376 455 457 458 464 363 234 465 467 478 432 453 479 480 443 493 223 305 50...
result:
wrong answer 59 and 52 are not connected