Skip to content

Commit a30d8eb

Browse files
alphastar
1 parent de7334c commit a30d8eb

File tree

2 files changed

+109
-0
lines changed

2 files changed

+109
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
#include <bits/stdc++.h>
2+
3+
using namespace std;
4+
5+
using ll = long long;
6+
#define ii pair<int, int>
7+
#define f first
8+
#define s second
9+
#define pb push_back
10+
#define mp make_pair
11+
#define all(x) x.begin(), x.end()
12+
#define sz(x) (int)x.size()
13+
#define F0R(i, n) for (int i = 0; i < n; i++)
14+
#define FOR(i, a, b) for (int i = a; i < b; i++)
15+
#define inf 1000000010
16+
17+
int main() {
18+
cin.tie(0)->sync_with_stdio(0);
19+
20+
int t; cin >> t;
21+
int n; cin >> n;
22+
int A[n]; F0R(i, n) cin >> A[i];
23+
24+
bool g = 1;
25+
vector<int> newSeq;
26+
F0R(i, n) if (A[i] <= n) newSeq.pb(A[i]);
27+
int lastCar = -1;
28+
for (int i = 0; i < sz(newSeq); i++) {
29+
if (lastCar != -1 && lastCar <= newSeq[i]) g = 0;
30+
if (i == sz(newSeq)-1) continue;
31+
if (newSeq[i] >= newSeq[i+1]) {
32+
if (lastCar != -1) g = 0;
33+
else {
34+
lastCar = newSeq[i];
35+
}
36+
}
37+
}
38+
cout << g << endl;
39+
40+
return 0;
41+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
#include <bits/stdc++.h>
2+
3+
using namespace std;
4+
5+
using ll = long long;
6+
#define ii pair<int, int>
7+
#define f first
8+
#define s second
9+
#define pb push_back
10+
#define mp make_pair
11+
#define all(x) x.begin(), x.end()
12+
#define sz(x) (int)x.size()
13+
#define F0R(i, n) for (int i = 0; i < n; i++)
14+
#define FOR(i, a, b) for (int i = a; i < b; i++)
15+
#define inf 1000000010
16+
17+
int n;
18+
ll P[1000000];
19+
vector<int> adj[1000000];
20+
ll sz[1000000];
21+
22+
ll dfs1(int u, int p = 0) {
23+
sz[u] = P[u];
24+
for (int v : adj[u]) {
25+
if (v != p) sz[u] += dfs1(v, u);
26+
}
27+
return sz[u];
28+
}
29+
30+
ll best = 1e18;
31+
int bestAns = -1;
32+
void dfs2(int u, int p = 0, ll par = 0) {
33+
ll childrenSum = 0;
34+
ll mxChild = 0;
35+
for (auto v : adj[u]) {
36+
if (v != p) {
37+
childrenSum += sz[v];
38+
mxChild = max(mxChild, sz[v]);
39+
}
40+
}
41+
if (best > max(par, mxChild)) {
42+
best = max(par, mxChild);
43+
bestAns = u;
44+
}
45+
for (auto v : adj[u]) {
46+
if (v != p) {
47+
dfs2(v, u, par+childrenSum-sz[v]+P[u]);
48+
}
49+
}
50+
}
51+
52+
int main() {
53+
cin.tie(0)->sync_with_stdio(0);
54+
55+
cin >> n;
56+
F0R(i, n) cin >> P[i];
57+
F0R(i, n-1) {
58+
int s, d; cin >> s >> d;
59+
adj[s].pb(d);
60+
adj[d].pb(s);
61+
}
62+
63+
dfs1(0);
64+
dfs2(0);
65+
cout << bestAns << endl;
66+
67+
return 0;
68+
}

0 commit comments

Comments
 (0)