# |
Submission time |
Handle |
Problem |
Language |
Result |
Execution time |
Memory |
480704 |
2021-10-17T22:39:00 Z |
hidden1 |
Railway (BOI17_railway) |
C++14 |
|
167 ms |
36648 KB |
#include <bits/stdc++.h>
using namespace std;
//#pragma GCC optimize ("O3")
//#pragma GCC target ("sse4")
#define endl "\n"
typedef long long ll;
template<class T, class T2> inline ostream &operator <<(ostream &out, const pair<T, T2> &x) { out << x.first << " " << x.second; return out;}
template<class T, class T2> inline istream &operator >>(istream &in, pair<T, T2> &x) { in >> x.first >> x.second; return in;}
template<class T, class T2> inline bool chkmax(T &x, const T2 &y) { return x < y ? x = y, 1 : 0; }
template<class T, class T2> inline bool chkmin(T &x, const T2 &y) { return x > y ? x = y, 1 : 0; }
const ll mod = 1e9 + 7;
#ifndef LOCAL
#define cerr if(false) cerr
#endif
const ll MAX_N = 1e5 + 10, MAX_LOG = 20;;
vector<pair<ll, ll> > g[MAX_N];
ll par[MAX_N][MAX_LOG];
ll d[MAX_N];
ll ind[MAX_N], cnt[MAX_N];
ll in[MAX_N], out[MAX_N], tme;
vector<ll> ans;
ll n, m, k;
void dfs(ll x, ll p) {
par[x][0] = p;
for(ll i = 1; i < MAX_LOG; i ++) {
par[x][i] = par[par[x][i - 1]][i - 1];
}
d[x] = d[p] + 1;
in[x] = out[x] = tme ++;
for(auto it : g[x]) {
if(it.first == p) {continue;}
ind[it.first] = it.second;
dfs(it.first, x);
out[x] = out[it.first];
}
}
ll lca(ll a, ll b) {
if(d[a] < d[b]) {swap(a, b);}
for(ll i = MAX_LOG - 1; i >= 0; i --) {
if(d[par[a][i]] >= d[b]) {
a = par[a][i];
}
}
if(a == b) {return a;}
for(ll i = MAX_LOG - 1; i >= 0; i --) {
if(par[a][i] != par[b][i]) {
a = par[a][i];
b = par[b][i];
}
}
return par[a][0];
}
ll calc(ll x, ll p) {
ll now = cnt[x];
for(auto it : g[x]) {
if(it.first == p) {continue;}
now += calc(it.first, x);
}
if(now >= k) {
ans.push_back(ind[x]);
}
cerr << "for " << x << " " << ind[x] << " " << now << endl;
return now;
}
void addCnt(vector<ll> &vert) {
sort(vert.begin(), vert.end(), [](const ll a, const ll b) {
return in[a] < in[b];
});
for(auto it : vert) {
cnt[it] ++;
}
vector<pair<ll, ll> > auxVert = {{vert[0], 1}};
for(ll i = 1; i < vert.size(); i ++) {
auxVert.push_back({lca(vert[i - 1], vert[i]), 0});
auxVert.push_back({vert[i], 1});
}
sort(auxVert.begin(), auxVert.end(), [](const pair<ll, ll> &a, const pair<ll, ll> &b) {
return in[a.first] < in[b.first];
});
stack<pair<ll, ll> > st;
auto executePop = [](const pair<ll, ll> x) {
cnt[x.first] -= x.second - 1;
};
for(auto it : auxVert) {
while(!st.empty() && !(in[st.top().first] <= in[it.first] && out[it.first] <= out[st.top().first])) {
auto tp = st.top(); st.pop();
executePop(tp);
if(!st.empty()) {
st.top().second ++;
}
}
if(st.empty() || st.top().first != it.first) {
st.push(it);
} else {
st.top().second += it.second;
}
}
while(!st.empty()) {
auto tp = st.top(); st.pop();
executePop(tp);
if(!st.empty()) {
st.top().second ++;
} else {
cnt[tp.first] --;
}
}
}
signed main() {
ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
cin >> n >> m >> k;
for(ll i = 0; i < n - 1; i ++) {
ll a, b;
cin >> a >> b;
g[a].push_back({b, i + 1});
g[b].push_back({a, i + 1});
}
dfs(1, 0);
for(ll i = 0; i < m; i ++) {
ll lst;
cin >> lst;
vector<ll> a(lst);
for(ll j = 0; j < lst; j ++) {
cin >> a[j];
}
addCnt(a);
}
calc(1, 0);
sort(ans.begin(), ans.end());
cout << ans.size() << endl;
for(auto it : ans) {
cout << it << " ";
}
return 0;
}
Compilation message
railway.cpp: In function 'void addCnt(std::vector<long long int>&)':
railway.cpp:79:21: warning: comparison of integer expressions of different signedness: 'll' {aka 'long long int'} and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
79 | for(ll i = 1; i < vert.size(); i ++) {
| ~~^~~~~~~~~~~~~
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2 ms |
2636 KB |
Output is correct |
2 |
Correct |
8 ms |
5160 KB |
Output is correct |
3 |
Correct |
9 ms |
5180 KB |
Output is correct |
4 |
Correct |
2 ms |
2636 KB |
Output is correct |
5 |
Correct |
3 ms |
2636 KB |
Output is correct |
6 |
Correct |
8 ms |
5708 KB |
Output is correct |
7 |
Correct |
8 ms |
5324 KB |
Output is correct |
8 |
Correct |
7 ms |
5164 KB |
Output is correct |
9 |
Correct |
8 ms |
5196 KB |
Output is correct |
10 |
Correct |
2 ms |
2636 KB |
Output is correct |
11 |
Correct |
2 ms |
2636 KB |
Output is correct |
12 |
Correct |
2 ms |
2636 KB |
Output is correct |
13 |
Correct |
2 ms |
2636 KB |
Output is correct |
14 |
Correct |
2 ms |
2636 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2 ms |
2636 KB |
Output is correct |
2 |
Correct |
8 ms |
5160 KB |
Output is correct |
3 |
Correct |
9 ms |
5180 KB |
Output is correct |
4 |
Correct |
2 ms |
2636 KB |
Output is correct |
5 |
Correct |
3 ms |
2636 KB |
Output is correct |
6 |
Correct |
8 ms |
5708 KB |
Output is correct |
7 |
Correct |
8 ms |
5324 KB |
Output is correct |
8 |
Correct |
7 ms |
5164 KB |
Output is correct |
9 |
Correct |
8 ms |
5196 KB |
Output is correct |
10 |
Correct |
2 ms |
2636 KB |
Output is correct |
11 |
Correct |
2 ms |
2636 KB |
Output is correct |
12 |
Correct |
2 ms |
2636 KB |
Output is correct |
13 |
Correct |
2 ms |
2636 KB |
Output is correct |
14 |
Correct |
2 ms |
2636 KB |
Output is correct |
15 |
Correct |
40 ms |
5640 KB |
Output is correct |
16 |
Correct |
41 ms |
5668 KB |
Output is correct |
17 |
Correct |
41 ms |
5748 KB |
Output is correct |
18 |
Correct |
10 ms |
5580 KB |
Output is correct |
19 |
Correct |
8 ms |
5356 KB |
Output is correct |
20 |
Correct |
41 ms |
5808 KB |
Output is correct |
21 |
Correct |
44 ms |
5628 KB |
Output is correct |
22 |
Correct |
2 ms |
2636 KB |
Output is correct |
23 |
Correct |
8 ms |
5196 KB |
Output is correct |
24 |
Correct |
8 ms |
5196 KB |
Output is correct |
25 |
Correct |
2 ms |
2672 KB |
Output is correct |
26 |
Correct |
2 ms |
2636 KB |
Output is correct |
27 |
Correct |
8 ms |
5624 KB |
Output is correct |
28 |
Correct |
8 ms |
5324 KB |
Output is correct |
29 |
Correct |
9 ms |
5196 KB |
Output is correct |
30 |
Correct |
8 ms |
5240 KB |
Output is correct |
31 |
Correct |
2 ms |
2668 KB |
Output is correct |
32 |
Correct |
2 ms |
2668 KB |
Output is correct |
33 |
Correct |
2 ms |
2636 KB |
Output is correct |
34 |
Correct |
2 ms |
2636 KB |
Output is correct |
35 |
Correct |
2 ms |
2636 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
153 ms |
34320 KB |
Output is correct |
2 |
Correct |
2 ms |
2636 KB |
Output is correct |
3 |
Correct |
157 ms |
35704 KB |
Output is correct |
4 |
Correct |
144 ms |
34988 KB |
Output is correct |
5 |
Correct |
153 ms |
36196 KB |
Output is correct |
6 |
Correct |
131 ms |
36648 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
106 ms |
29980 KB |
Output is correct |
2 |
Correct |
146 ms |
27576 KB |
Output is correct |
3 |
Correct |
115 ms |
27336 KB |
Output is correct |
4 |
Correct |
116 ms |
27348 KB |
Output is correct |
5 |
Correct |
129 ms |
27332 KB |
Output is correct |
6 |
Correct |
105 ms |
30208 KB |
Output is correct |
7 |
Correct |
106 ms |
30060 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
106 ms |
29980 KB |
Output is correct |
2 |
Correct |
146 ms |
27576 KB |
Output is correct |
3 |
Correct |
115 ms |
27336 KB |
Output is correct |
4 |
Correct |
116 ms |
27348 KB |
Output is correct |
5 |
Correct |
129 ms |
27332 KB |
Output is correct |
6 |
Correct |
105 ms |
30208 KB |
Output is correct |
7 |
Correct |
106 ms |
30060 KB |
Output is correct |
8 |
Correct |
145 ms |
31136 KB |
Output is correct |
9 |
Correct |
145 ms |
32496 KB |
Output is correct |
10 |
Correct |
129 ms |
36456 KB |
Output is correct |
11 |
Correct |
167 ms |
36208 KB |
Output is correct |
12 |
Correct |
110 ms |
28272 KB |
Output is correct |
13 |
Correct |
113 ms |
28376 KB |
Output is correct |
14 |
Correct |
130 ms |
29000 KB |
Output is correct |
15 |
Correct |
122 ms |
29004 KB |
Output is correct |
16 |
Correct |
125 ms |
29148 KB |
Output is correct |
17 |
Correct |
140 ms |
29060 KB |
Output is correct |
18 |
Correct |
115 ms |
29112 KB |
Output is correct |
19 |
Correct |
127 ms |
29428 KB |
Output is correct |
20 |
Correct |
121 ms |
32300 KB |
Output is correct |
21 |
Correct |
108 ms |
32492 KB |
Output is correct |
22 |
Correct |
130 ms |
32256 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2 ms |
2636 KB |
Output is correct |
2 |
Correct |
8 ms |
5160 KB |
Output is correct |
3 |
Correct |
9 ms |
5180 KB |
Output is correct |
4 |
Correct |
2 ms |
2636 KB |
Output is correct |
5 |
Correct |
3 ms |
2636 KB |
Output is correct |
6 |
Correct |
8 ms |
5708 KB |
Output is correct |
7 |
Correct |
8 ms |
5324 KB |
Output is correct |
8 |
Correct |
7 ms |
5164 KB |
Output is correct |
9 |
Correct |
8 ms |
5196 KB |
Output is correct |
10 |
Correct |
2 ms |
2636 KB |
Output is correct |
11 |
Correct |
2 ms |
2636 KB |
Output is correct |
12 |
Correct |
2 ms |
2636 KB |
Output is correct |
13 |
Correct |
2 ms |
2636 KB |
Output is correct |
14 |
Correct |
2 ms |
2636 KB |
Output is correct |
15 |
Correct |
40 ms |
5640 KB |
Output is correct |
16 |
Correct |
41 ms |
5668 KB |
Output is correct |
17 |
Correct |
41 ms |
5748 KB |
Output is correct |
18 |
Correct |
10 ms |
5580 KB |
Output is correct |
19 |
Correct |
8 ms |
5356 KB |
Output is correct |
20 |
Correct |
41 ms |
5808 KB |
Output is correct |
21 |
Correct |
44 ms |
5628 KB |
Output is correct |
22 |
Correct |
2 ms |
2636 KB |
Output is correct |
23 |
Correct |
8 ms |
5196 KB |
Output is correct |
24 |
Correct |
8 ms |
5196 KB |
Output is correct |
25 |
Correct |
2 ms |
2672 KB |
Output is correct |
26 |
Correct |
2 ms |
2636 KB |
Output is correct |
27 |
Correct |
8 ms |
5624 KB |
Output is correct |
28 |
Correct |
8 ms |
5324 KB |
Output is correct |
29 |
Correct |
9 ms |
5196 KB |
Output is correct |
30 |
Correct |
8 ms |
5240 KB |
Output is correct |
31 |
Correct |
2 ms |
2668 KB |
Output is correct |
32 |
Correct |
2 ms |
2668 KB |
Output is correct |
33 |
Correct |
2 ms |
2636 KB |
Output is correct |
34 |
Correct |
2 ms |
2636 KB |
Output is correct |
35 |
Correct |
2 ms |
2636 KB |
Output is correct |
36 |
Correct |
153 ms |
34320 KB |
Output is correct |
37 |
Correct |
2 ms |
2636 KB |
Output is correct |
38 |
Correct |
157 ms |
35704 KB |
Output is correct |
39 |
Correct |
144 ms |
34988 KB |
Output is correct |
40 |
Correct |
153 ms |
36196 KB |
Output is correct |
41 |
Correct |
131 ms |
36648 KB |
Output is correct |
42 |
Correct |
106 ms |
29980 KB |
Output is correct |
43 |
Correct |
146 ms |
27576 KB |
Output is correct |
44 |
Correct |
115 ms |
27336 KB |
Output is correct |
45 |
Correct |
116 ms |
27348 KB |
Output is correct |
46 |
Correct |
129 ms |
27332 KB |
Output is correct |
47 |
Correct |
105 ms |
30208 KB |
Output is correct |
48 |
Correct |
106 ms |
30060 KB |
Output is correct |
49 |
Correct |
145 ms |
31136 KB |
Output is correct |
50 |
Correct |
145 ms |
32496 KB |
Output is correct |
51 |
Correct |
129 ms |
36456 KB |
Output is correct |
52 |
Correct |
167 ms |
36208 KB |
Output is correct |
53 |
Correct |
110 ms |
28272 KB |
Output is correct |
54 |
Correct |
113 ms |
28376 KB |
Output is correct |
55 |
Correct |
130 ms |
29000 KB |
Output is correct |
56 |
Correct |
122 ms |
29004 KB |
Output is correct |
57 |
Correct |
125 ms |
29148 KB |
Output is correct |
58 |
Correct |
140 ms |
29060 KB |
Output is correct |
59 |
Correct |
115 ms |
29112 KB |
Output is correct |
60 |
Correct |
127 ms |
29428 KB |
Output is correct |
61 |
Correct |
121 ms |
32300 KB |
Output is correct |
62 |
Correct |
108 ms |
32492 KB |
Output is correct |
63 |
Correct |
130 ms |
32256 KB |
Output is correct |
64 |
Correct |
127 ms |
32580 KB |
Output is correct |
65 |
Correct |
153 ms |
29140 KB |
Output is correct |
66 |
Correct |
155 ms |
29176 KB |
Output is correct |
67 |
Correct |
149 ms |
29072 KB |
Output is correct |
68 |
Correct |
91 ms |
28228 KB |
Output is correct |
69 |
Correct |
107 ms |
28280 KB |
Output is correct |
70 |
Correct |
130 ms |
32948 KB |
Output is correct |
71 |
Correct |
137 ms |
32284 KB |
Output is correct |
72 |
Correct |
2 ms |
2636 KB |
Output is correct |
73 |
Correct |
7 ms |
5196 KB |
Output is correct |
74 |
Correct |
7 ms |
5248 KB |
Output is correct |
75 |
Correct |
2 ms |
2636 KB |
Output is correct |
76 |
Correct |
2 ms |
2668 KB |
Output is correct |
77 |
Correct |
9 ms |
5668 KB |
Output is correct |
78 |
Correct |
8 ms |
5400 KB |
Output is correct |
79 |
Correct |
6 ms |
5196 KB |
Output is correct |
80 |
Correct |
7 ms |
5196 KB |
Output is correct |
81 |
Correct |
2 ms |
2596 KB |
Output is correct |
82 |
Correct |
2 ms |
2636 KB |
Output is correct |
83 |
Correct |
2 ms |
2636 KB |
Output is correct |
84 |
Correct |
2 ms |
2636 KB |
Output is correct |
85 |
Correct |
2 ms |
2636 KB |
Output is correct |
86 |
Correct |
39 ms |
5692 KB |
Output is correct |
87 |
Correct |
41 ms |
5684 KB |
Output is correct |
88 |
Correct |
43 ms |
5664 KB |
Output is correct |
89 |
Correct |
10 ms |
5556 KB |
Output is correct |
90 |
Correct |
8 ms |
5324 KB |
Output is correct |
91 |
Correct |
43 ms |
5764 KB |
Output is correct |
92 |
Correct |
44 ms |
5624 KB |
Output is correct |
93 |
Correct |
2 ms |
2636 KB |
Output is correct |
94 |
Correct |
151 ms |
36116 KB |
Output is correct |
95 |
Correct |
145 ms |
35648 KB |
Output is correct |
96 |
Correct |
136 ms |
34936 KB |
Output is correct |
97 |
Correct |
158 ms |
36200 KB |
Output is correct |
98 |
Correct |
143 ms |
36536 KB |
Output is correct |
99 |
Correct |
118 ms |
29124 KB |
Output is correct |
100 |
Correct |
125 ms |
29220 KB |
Output is correct |
101 |
Correct |
137 ms |
29156 KB |
Output is correct |
102 |
Correct |
120 ms |
29408 KB |
Output is correct |
103 |
Correct |
105 ms |
31952 KB |
Output is correct |
104 |
Correct |
112 ms |
32568 KB |
Output is correct |
105 |
Correct |
108 ms |
31824 KB |
Output is correct |
106 |
Correct |
128 ms |
32652 KB |
Output is correct |
107 |
Correct |
125 ms |
32452 KB |
Output is correct |
108 |
Correct |
125 ms |
36352 KB |
Output is correct |
109 |
Correct |
139 ms |
36464 KB |
Output is correct |
110 |
Correct |
123 ms |
28348 KB |
Output is correct |
111 |
Correct |
126 ms |
28276 KB |
Output is correct |
112 |
Correct |
124 ms |
28996 KB |
Output is correct |
113 |
Correct |
126 ms |
29060 KB |
Output is correct |