# |
Submission time |
Handle |
Problem |
Language |
Result |
Execution time |
Memory |
448719 |
2021-08-01T01:06:04 Z |
JovanB |
Bridges (APIO19_bridges) |
C++17 |
|
2315 ms |
111816 KB |
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using ld = long double;
const int N = 50000;
const int M = 100000;
const int K = 600;
int ea[M+5];
int eb[M+5];
int ec[M+5];
bool changed[M+5];
int qt[M+5];
int qa[M+5];
int qb[M+5];
struct DSU{
int n;
int par[N+5];
int sz[N+5];
void init(int _n){
n = _n;
for(int i=1; i<=n; i++){
par[i] = i;
sz[i] = 1;
}
}
int root(int x){ return (x == par[x] ? x : par[x] = root(par[x])); }
void povezi(int a, int b){
a = root(a);
b = root(b);
if(a == b) return;
if(sz[a] < sz[b]) swap(a, b);
sz[a] += sz[b];
par[b] = a;
}
} dsu;
int sol[M+5];
const int INF = 1000000007;
vector <int> ima[M+5];
int gde[M+5];
vector <pair <int, int>> unerased;
vector <int> graf[N+5];
bool visited[N+5];
int dfs(int v){
int svi = dsu.sz[v];
visited[v] = 1;
for(auto c : graf[v]) if(!visited[c]) svi += dfs(c);
return svi;
}
int main(){
ios_base::sync_with_stdio(false), cin.tie(0);
cout.precision(10);
cout << fixed;
int n, m;
cin >> n >> m;
for(int i=1; i<=m; i++){
cin >> ea[i] >> eb[i] >> ec[i];
unerased.push_back({ec[i], i});
}
int qrs;
cin >> qrs;
int qq = 0;
sort(unerased.begin(), unerased.end());
for(int ql=1; ql<=qrs; ql+=K){
int qr = min(qrs, ql+K-1);
dsu.init(n);
vector <pair <int, pair <int, int>>> dvec;
vector <int> ch;
for(int i=ql; i<=qr; i++){
cin >> qt[i] >> qa[i] >> qb[i];
if(qt[i] == 1){
if(!changed[qa[i]]){
ch.push_back(qa[i]);
}
changed[qa[i]] = 1;
}
else{
qq++;
gde[i] = qq;
dvec.push_back({qb[i], {qq, qa[i]}});
}
}
sort(dvec.begin(), dvec.end());
vector <pair <int, pair <int, int>>> vec;
int j = 0;
for(auto c : unerased){
while(j < dvec.size() && c.first >= dvec[j].first){
vec.push_back(dvec[j]);
j++;
}
if(!changed[c.second]) vec.push_back({c.first, {INF, c.second}});
}
while(j < dvec.size()){
vec.push_back(dvec[j]);
j++;
}
reverse(vec.begin(), vec.end());
for(int i=ql; i<=qr; i++){
if(qt[i] == 1) ec[qa[i]] = qb[i];
else{
for(auto c : ch){
if(ec[c] >= qb[i]) ima[gde[i]].push_back(c);
}
}
}
for(auto x : vec){
if(x.second.first == INF) dsu.povezi(ea[x.second.second], eb[x.second.second]);
else{
int ind = x.second.first;
int p = x.second.second;
p = dsu.root(p);
for(auto c : ima[ind]){
int a = dsu.root(ea[c]);
int b = dsu.root(eb[c]);
if(a == b) continue;
graf[a].push_back(b);
graf[b].push_back(a);
}
sol[ind] = dfs(p);
visited[p] = 0;
for(auto c : ima[ind]){
int a = dsu.root(ea[c]);
int b = dsu.root(eb[c]);
graf[a].clear();
graf[b].clear();
visited[a] = visited[b] = 0;
}
}
}
for(int i=ql; i<=qr; i++) if(gde[i]) ima[gde[i]].clear();
vector <pair <int, int>> nv;
vector <pair <int, int>> dv;
for(auto c : ch){
dv.push_back({ec[c], c});
}
sort(dv.begin(), dv.end());
j = 0;
for(auto c : unerased){
while(j < dv.size() && c.first >= dv[j].first){
nv.push_back(dv[j]);
j++;
}
if(!changed[c.second]) nv.push_back(c);
}
while(j < dv.size()){
nv.push_back(dv[j]);
j++;
}
unerased = nv;
nv.clear();
nv.shrink_to_fit();
for(auto c : ch) changed[c] = 0;
}
for(int i=1; i<=qq; i++) cout << sol[i] << "\n";
return 0;
}
Compilation message
bridges.cpp: In function 'int main()':
bridges.cpp:100:21: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, std::pair<int, int> > >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
100 | while(j < dvec.size() && c.first >= dvec[j].first){
| ~~^~~~~~~~~~~~~
bridges.cpp:106:17: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, std::pair<int, int> > >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
106 | while(j < dvec.size()){
| ~~^~~~~~~~~~~~~
bridges.cpp:152:21: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
152 | while(j < dv.size() && c.first >= dv[j].first){
| ~~^~~~~~~~~~~
bridges.cpp:158:17: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
158 | while(j < dv.size()){
| ~~^~~~~~~~~~~
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
3 ms |
3856 KB |
Output is correct |
2 |
Correct |
3 ms |
3788 KB |
Output is correct |
3 |
Correct |
36 ms |
7500 KB |
Output is correct |
4 |
Correct |
7 ms |
4172 KB |
Output is correct |
5 |
Correct |
22 ms |
5708 KB |
Output is correct |
6 |
Correct |
20 ms |
5700 KB |
Output is correct |
7 |
Correct |
23 ms |
5712 KB |
Output is correct |
8 |
Correct |
21 ms |
5492 KB |
Output is correct |
9 |
Correct |
29 ms |
6712 KB |
Output is correct |
10 |
Correct |
22 ms |
5660 KB |
Output is correct |
11 |
Correct |
22 ms |
5516 KB |
Output is correct |
12 |
Correct |
24 ms |
6000 KB |
Output is correct |
13 |
Correct |
28 ms |
6024 KB |
Output is correct |
14 |
Correct |
26 ms |
5848 KB |
Output is correct |
15 |
Correct |
25 ms |
5672 KB |
Output is correct |
16 |
Correct |
24 ms |
6004 KB |
Output is correct |
17 |
Correct |
24 ms |
5952 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1461 ms |
53892 KB |
Output is correct |
2 |
Correct |
1589 ms |
53708 KB |
Output is correct |
3 |
Correct |
1490 ms |
53732 KB |
Output is correct |
4 |
Correct |
1501 ms |
53428 KB |
Output is correct |
5 |
Correct |
1499 ms |
53752 KB |
Output is correct |
6 |
Correct |
2270 ms |
109588 KB |
Output is correct |
7 |
Correct |
2140 ms |
110004 KB |
Output is correct |
8 |
Correct |
2114 ms |
109880 KB |
Output is correct |
9 |
Correct |
46 ms |
6084 KB |
Output is correct |
10 |
Correct |
1758 ms |
85444 KB |
Output is correct |
11 |
Correct |
1589 ms |
69152 KB |
Output is correct |
12 |
Correct |
1215 ms |
39428 KB |
Output is correct |
13 |
Correct |
1208 ms |
49044 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1187 ms |
52136 KB |
Output is correct |
2 |
Correct |
1039 ms |
78356 KB |
Output is correct |
3 |
Correct |
1444 ms |
80992 KB |
Output is correct |
4 |
Correct |
1159 ms |
51740 KB |
Output is correct |
5 |
Correct |
60 ms |
6020 KB |
Output is correct |
6 |
Correct |
1358 ms |
65112 KB |
Output is correct |
7 |
Correct |
1056 ms |
46320 KB |
Output is correct |
8 |
Correct |
867 ms |
36060 KB |
Output is correct |
9 |
Correct |
735 ms |
28536 KB |
Output is correct |
10 |
Correct |
669 ms |
22232 KB |
Output is correct |
11 |
Correct |
793 ms |
27144 KB |
Output is correct |
12 |
Correct |
687 ms |
21244 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1358 ms |
11756 KB |
Output is correct |
2 |
Correct |
46 ms |
5952 KB |
Output is correct |
3 |
Correct |
141 ms |
9540 KB |
Output is correct |
4 |
Correct |
123 ms |
9712 KB |
Output is correct |
5 |
Correct |
1154 ms |
11732 KB |
Output is correct |
6 |
Correct |
1397 ms |
11720 KB |
Output is correct |
7 |
Correct |
1133 ms |
11732 KB |
Output is correct |
8 |
Correct |
751 ms |
9036 KB |
Output is correct |
9 |
Correct |
767 ms |
9068 KB |
Output is correct |
10 |
Correct |
764 ms |
9052 KB |
Output is correct |
11 |
Correct |
1211 ms |
10844 KB |
Output is correct |
12 |
Correct |
1212 ms |
10872 KB |
Output is correct |
13 |
Correct |
1238 ms |
10808 KB |
Output is correct |
14 |
Correct |
1111 ms |
11792 KB |
Output is correct |
15 |
Correct |
1056 ms |
11724 KB |
Output is correct |
16 |
Correct |
1435 ms |
11692 KB |
Output is correct |
17 |
Correct |
1441 ms |
11648 KB |
Output is correct |
18 |
Correct |
1470 ms |
11700 KB |
Output is correct |
19 |
Correct |
1475 ms |
11824 KB |
Output is correct |
20 |
Correct |
1375 ms |
11088 KB |
Output is correct |
21 |
Correct |
1366 ms |
11080 KB |
Output is correct |
22 |
Correct |
1461 ms |
11540 KB |
Output is correct |
23 |
Correct |
1178 ms |
11024 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1461 ms |
53892 KB |
Output is correct |
2 |
Correct |
1589 ms |
53708 KB |
Output is correct |
3 |
Correct |
1490 ms |
53732 KB |
Output is correct |
4 |
Correct |
1501 ms |
53428 KB |
Output is correct |
5 |
Correct |
1499 ms |
53752 KB |
Output is correct |
6 |
Correct |
2270 ms |
109588 KB |
Output is correct |
7 |
Correct |
2140 ms |
110004 KB |
Output is correct |
8 |
Correct |
2114 ms |
109880 KB |
Output is correct |
9 |
Correct |
46 ms |
6084 KB |
Output is correct |
10 |
Correct |
1758 ms |
85444 KB |
Output is correct |
11 |
Correct |
1589 ms |
69152 KB |
Output is correct |
12 |
Correct |
1215 ms |
39428 KB |
Output is correct |
13 |
Correct |
1208 ms |
49044 KB |
Output is correct |
14 |
Correct |
1187 ms |
52136 KB |
Output is correct |
15 |
Correct |
1039 ms |
78356 KB |
Output is correct |
16 |
Correct |
1444 ms |
80992 KB |
Output is correct |
17 |
Correct |
1159 ms |
51740 KB |
Output is correct |
18 |
Correct |
60 ms |
6020 KB |
Output is correct |
19 |
Correct |
1358 ms |
65112 KB |
Output is correct |
20 |
Correct |
1056 ms |
46320 KB |
Output is correct |
21 |
Correct |
867 ms |
36060 KB |
Output is correct |
22 |
Correct |
735 ms |
28536 KB |
Output is correct |
23 |
Correct |
669 ms |
22232 KB |
Output is correct |
24 |
Correct |
793 ms |
27144 KB |
Output is correct |
25 |
Correct |
687 ms |
21244 KB |
Output is correct |
26 |
Correct |
1495 ms |
53272 KB |
Output is correct |
27 |
Correct |
1896 ms |
82464 KB |
Output is correct |
28 |
Correct |
1651 ms |
52504 KB |
Output is correct |
29 |
Correct |
1087 ms |
24632 KB |
Output is correct |
30 |
Correct |
1893 ms |
68508 KB |
Output is correct |
31 |
Correct |
1921 ms |
71088 KB |
Output is correct |
32 |
Correct |
1899 ms |
71816 KB |
Output is correct |
33 |
Correct |
1611 ms |
51832 KB |
Output is correct |
34 |
Correct |
1613 ms |
52252 KB |
Output is correct |
35 |
Correct |
1654 ms |
52268 KB |
Output is correct |
36 |
Correct |
1184 ms |
28904 KB |
Output is correct |
37 |
Correct |
1266 ms |
28068 KB |
Output is correct |
38 |
Correct |
1162 ms |
27048 KB |
Output is correct |
39 |
Correct |
949 ms |
17148 KB |
Output is correct |
40 |
Correct |
919 ms |
16768 KB |
Output is correct |
41 |
Correct |
911 ms |
16360 KB |
Output is correct |
42 |
Correct |
924 ms |
16540 KB |
Output is correct |
43 |
Correct |
948 ms |
16196 KB |
Output is correct |
44 |
Correct |
943 ms |
15880 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
3 ms |
3856 KB |
Output is correct |
2 |
Correct |
3 ms |
3788 KB |
Output is correct |
3 |
Correct |
36 ms |
7500 KB |
Output is correct |
4 |
Correct |
7 ms |
4172 KB |
Output is correct |
5 |
Correct |
22 ms |
5708 KB |
Output is correct |
6 |
Correct |
20 ms |
5700 KB |
Output is correct |
7 |
Correct |
23 ms |
5712 KB |
Output is correct |
8 |
Correct |
21 ms |
5492 KB |
Output is correct |
9 |
Correct |
29 ms |
6712 KB |
Output is correct |
10 |
Correct |
22 ms |
5660 KB |
Output is correct |
11 |
Correct |
22 ms |
5516 KB |
Output is correct |
12 |
Correct |
24 ms |
6000 KB |
Output is correct |
13 |
Correct |
28 ms |
6024 KB |
Output is correct |
14 |
Correct |
26 ms |
5848 KB |
Output is correct |
15 |
Correct |
25 ms |
5672 KB |
Output is correct |
16 |
Correct |
24 ms |
6004 KB |
Output is correct |
17 |
Correct |
24 ms |
5952 KB |
Output is correct |
18 |
Correct |
1461 ms |
53892 KB |
Output is correct |
19 |
Correct |
1589 ms |
53708 KB |
Output is correct |
20 |
Correct |
1490 ms |
53732 KB |
Output is correct |
21 |
Correct |
1501 ms |
53428 KB |
Output is correct |
22 |
Correct |
1499 ms |
53752 KB |
Output is correct |
23 |
Correct |
2270 ms |
109588 KB |
Output is correct |
24 |
Correct |
2140 ms |
110004 KB |
Output is correct |
25 |
Correct |
2114 ms |
109880 KB |
Output is correct |
26 |
Correct |
46 ms |
6084 KB |
Output is correct |
27 |
Correct |
1758 ms |
85444 KB |
Output is correct |
28 |
Correct |
1589 ms |
69152 KB |
Output is correct |
29 |
Correct |
1215 ms |
39428 KB |
Output is correct |
30 |
Correct |
1208 ms |
49044 KB |
Output is correct |
31 |
Correct |
1187 ms |
52136 KB |
Output is correct |
32 |
Correct |
1039 ms |
78356 KB |
Output is correct |
33 |
Correct |
1444 ms |
80992 KB |
Output is correct |
34 |
Correct |
1159 ms |
51740 KB |
Output is correct |
35 |
Correct |
60 ms |
6020 KB |
Output is correct |
36 |
Correct |
1358 ms |
65112 KB |
Output is correct |
37 |
Correct |
1056 ms |
46320 KB |
Output is correct |
38 |
Correct |
867 ms |
36060 KB |
Output is correct |
39 |
Correct |
735 ms |
28536 KB |
Output is correct |
40 |
Correct |
669 ms |
22232 KB |
Output is correct |
41 |
Correct |
793 ms |
27144 KB |
Output is correct |
42 |
Correct |
687 ms |
21244 KB |
Output is correct |
43 |
Correct |
1358 ms |
11756 KB |
Output is correct |
44 |
Correct |
46 ms |
5952 KB |
Output is correct |
45 |
Correct |
141 ms |
9540 KB |
Output is correct |
46 |
Correct |
123 ms |
9712 KB |
Output is correct |
47 |
Correct |
1154 ms |
11732 KB |
Output is correct |
48 |
Correct |
1397 ms |
11720 KB |
Output is correct |
49 |
Correct |
1133 ms |
11732 KB |
Output is correct |
50 |
Correct |
751 ms |
9036 KB |
Output is correct |
51 |
Correct |
767 ms |
9068 KB |
Output is correct |
52 |
Correct |
764 ms |
9052 KB |
Output is correct |
53 |
Correct |
1211 ms |
10844 KB |
Output is correct |
54 |
Correct |
1212 ms |
10872 KB |
Output is correct |
55 |
Correct |
1238 ms |
10808 KB |
Output is correct |
56 |
Correct |
1111 ms |
11792 KB |
Output is correct |
57 |
Correct |
1056 ms |
11724 KB |
Output is correct |
58 |
Correct |
1435 ms |
11692 KB |
Output is correct |
59 |
Correct |
1441 ms |
11648 KB |
Output is correct |
60 |
Correct |
1470 ms |
11700 KB |
Output is correct |
61 |
Correct |
1475 ms |
11824 KB |
Output is correct |
62 |
Correct |
1375 ms |
11088 KB |
Output is correct |
63 |
Correct |
1366 ms |
11080 KB |
Output is correct |
64 |
Correct |
1461 ms |
11540 KB |
Output is correct |
65 |
Correct |
1178 ms |
11024 KB |
Output is correct |
66 |
Correct |
1495 ms |
53272 KB |
Output is correct |
67 |
Correct |
1896 ms |
82464 KB |
Output is correct |
68 |
Correct |
1651 ms |
52504 KB |
Output is correct |
69 |
Correct |
1087 ms |
24632 KB |
Output is correct |
70 |
Correct |
1893 ms |
68508 KB |
Output is correct |
71 |
Correct |
1921 ms |
71088 KB |
Output is correct |
72 |
Correct |
1899 ms |
71816 KB |
Output is correct |
73 |
Correct |
1611 ms |
51832 KB |
Output is correct |
74 |
Correct |
1613 ms |
52252 KB |
Output is correct |
75 |
Correct |
1654 ms |
52268 KB |
Output is correct |
76 |
Correct |
1184 ms |
28904 KB |
Output is correct |
77 |
Correct |
1266 ms |
28068 KB |
Output is correct |
78 |
Correct |
1162 ms |
27048 KB |
Output is correct |
79 |
Correct |
949 ms |
17148 KB |
Output is correct |
80 |
Correct |
919 ms |
16768 KB |
Output is correct |
81 |
Correct |
911 ms |
16360 KB |
Output is correct |
82 |
Correct |
924 ms |
16540 KB |
Output is correct |
83 |
Correct |
948 ms |
16196 KB |
Output is correct |
84 |
Correct |
943 ms |
15880 KB |
Output is correct |
85 |
Correct |
2108 ms |
56200 KB |
Output is correct |
86 |
Correct |
201 ms |
13800 KB |
Output is correct |
87 |
Correct |
208 ms |
19312 KB |
Output is correct |
88 |
Correct |
1868 ms |
68540 KB |
Output is correct |
89 |
Correct |
2075 ms |
55280 KB |
Output is correct |
90 |
Correct |
1855 ms |
68992 KB |
Output is correct |
91 |
Correct |
1697 ms |
53536 KB |
Output is correct |
92 |
Correct |
1685 ms |
53312 KB |
Output is correct |
93 |
Correct |
2315 ms |
109720 KB |
Output is correct |
94 |
Correct |
1880 ms |
55096 KB |
Output is correct |
95 |
Correct |
1902 ms |
55432 KB |
Output is correct |
96 |
Correct |
2174 ms |
110428 KB |
Output is correct |
97 |
Correct |
1345 ms |
32168 KB |
Output is correct |
98 |
Correct |
1459 ms |
34716 KB |
Output is correct |
99 |
Correct |
2101 ms |
57012 KB |
Output is correct |
100 |
Correct |
2037 ms |
56172 KB |
Output is correct |
101 |
Correct |
2133 ms |
56032 KB |
Output is correct |
102 |
Correct |
2155 ms |
55784 KB |
Output is correct |
103 |
Correct |
2216 ms |
111816 KB |
Output is correct |
104 |
Correct |
2202 ms |
111704 KB |
Output is correct |
105 |
Correct |
1617 ms |
50536 KB |
Output is correct |
106 |
Correct |
1383 ms |
30992 KB |
Output is correct |
107 |
Correct |
1616 ms |
39612 KB |
Output is correct |
108 |
Correct |
2191 ms |
82732 KB |
Output is correct |
109 |
Correct |
2035 ms |
108520 KB |
Output is correct |