# |
Submission time |
Handle |
Problem |
Language |
Result |
Execution time |
Memory |
228124 |
2020-04-30T02:22:03 Z |
racsosabe |
Museum (CEOI17_museum) |
C++17 |
|
479 ms |
170616 KB |
#include<bits/stdc++.h>
#define all(v) (v).begin(),(v).end()
#define pb push_back
#define ppb pop_back
#define mp make_pair
#define ri(x) scanf("%d",&(x))
#define ri2(x,y) scanf("%d %d",&(x),&(y))
#define ri3(x,y,z) scanf("%d %d %d",&(x),&(y),&(z))
#define rll(x) scanf("%lld",&(x))
#define rll2(x,y) scanf("%lld %lld",&(x),&(y))
#define rll3(x,y,z) scanf("%lld %lld %lld",&(x),&(y),&(z))
#define gc(x) ((x) = getchar())
using namespace::std;
const long double PI = acos(-1);
const long long MOD = 1000000000 +7;
typedef long long ll;
typedef pair<ll,ll> pll;
typedef pair<ll,pll> tll;
typedef pair<int,int> ii;
typedef pair<int,ii> iii;
typedef vector<int> vi;
typedef vector<ii> vii;
typedef vector<iii> viii;
typedef vector<ll> vll;
typedef vector<pll> vpll;
typedef vector<tll> vtll;
typedef vector<string> vs;
typedef set<int> si;
typedef set<ii> sii;
typedef set<iii> siii;
ll gcd(ll a, ll b){ return b==0?a:gcd(b,a%b);}
ll add(ll a, ll b, ll m = MOD){
if(a >= m) a %= m;
if(b >= m) b %= m;
if(a < 0) a += m;
if(b < 0) b += m;
ll res = a+b;
if(res >= m or res <= -m) res %= m;
if(res < 0) res += m;
return res;
}
ll mul(ll a, ll b, ll m = MOD){
if(a >= m) a %= m;
if(b >= m) b %= m;
if(a < 0) a += m;
if(b < 0) b += m;
ll res = a*b;
if(res >= m or res <= -m) res %= m;
if(res < 0) res += m;
return res;
}
ll pow_mod(ll a, ll b, ll m = MOD){
ll res = 1LL;
a = a%m;
while(b){
if(b&1) res = mul(res,a,m);
b >>= 1;
a = mul(a,a,m);
}
return res;
}
ll fastexp(ll a, ll b){
ll res = 1LL;
while(b){
if(b&1) res = res*a;
b >>= 1;
a *= a;
}
return res;
}
int gcdExtendido(int a, int b, int *x, int *y){
if(a == 0){
*x = 0;
*y = 1;
return b;
}
int x1, y1;
int gcd = gcdExtendido(b%a,a,&x1,&y1);
*x = y1-(b/a)*x1;
*y = x1;
return gcd;
}
int modInverso(int a, int m){
int x, y;
int g = gcdExtendido(a,m,&x,&y);
if(g!=1) return -1;
else return (x%m + m)%m;
}
/****************************************
*************P*L*A*N*T*I*L*L*A************
*****************************************/
const int N = 10000+5;
const int inf = 1<<30;
int n;
int k;
int r;
vi G[N];
vi W[N];
int temp1[N];
int temp2[N];
int subtree[N];
int memo[N][N][2];
void DP(int u, int p = 0){
subtree[u] = 1;
for(int i=0; i<G[u].size(); i++){
int v = G[u][i];
int w = W[u][i];
if(v == p) continue;
DP(v, u);
fill(temp1, temp1 + k + 1, inf);
fill(temp2, temp2 + k + 1, inf);
temp1[0] = temp2[0] = temp1[1] = temp2[1] = 0;
for(int s1 = 0; s1 <= min(subtree[u], k); s1++){
for(int s2 = 0; s2 <= subtree[v] and s1 + s2 <= k; s2++){
temp1[s1 + s2] = min(temp1[s1 + s2], memo[u][s1][0] + 2 * w * (s2 > 0) + memo[v][s2][0]);
temp2[s1 + s2] = min(temp2[s1 + s2], memo[u][s1][0] + w * (s2 > 0) + memo[v][s2][1]);
temp2[s1 + s2] = min(temp2[s1 + s2], memo[u][s1][1] + 2 * w * (s2 > 0) + memo[v][s2][0]);
}
}
subtree[u] += subtree[v];
for(int i = 0; i <= min(k, subtree[u]); i++){
memo[u][i][0] = temp1[i];
memo[u][i][1] = temp2[i];
}
}
}
int main(){
ri3(n,k,r);
for(int i=1; i<n; i++){
int u, v, w;
ri3(u,v,w);
G[u].emplace_back(v);
G[v].emplace_back(u);
W[u].emplace_back(w);
W[v].emplace_back(w);
}
DP(r);
printf("%d\n",min(memo[r][k][0], memo[r][k][1]));
return 0;
}
Compilation message
museum.cpp: In function 'void DP(int, int)':
museum.cpp:119:16: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for(int i=0; i<G[u].size(); i++){
~^~~~~~~~~~~~
museum.cpp: In function 'int main()':
museum.cpp:8:25: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
#define ri3(x,y,z) scanf("%d %d %d",&(x),&(y),&(z))
~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
museum.cpp:143:2: note: in expansion of macro 'ri3'
ri3(n,k,r);
^~~
museum.cpp:8:25: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
#define ri3(x,y,z) scanf("%d %d %d",&(x),&(y),&(z))
~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
museum.cpp:146:3: note: in expansion of macro 'ri3'
ri3(u,v,w);
^~~
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
5 ms |
768 KB |
Output is correct |
2 |
Correct |
5 ms |
768 KB |
Output is correct |
3 |
Correct |
5 ms |
896 KB |
Output is correct |
4 |
Correct |
5 ms |
896 KB |
Output is correct |
5 |
Correct |
5 ms |
768 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
38 ms |
28408 KB |
Output is correct |
2 |
Correct |
38 ms |
28416 KB |
Output is correct |
3 |
Correct |
44 ms |
34844 KB |
Output is correct |
4 |
Correct |
42 ms |
33272 KB |
Output is correct |
5 |
Correct |
40 ms |
32120 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
38 ms |
28408 KB |
Output is correct |
2 |
Correct |
38 ms |
28416 KB |
Output is correct |
3 |
Correct |
44 ms |
34844 KB |
Output is correct |
4 |
Correct |
42 ms |
33272 KB |
Output is correct |
5 |
Correct |
40 ms |
32120 KB |
Output is correct |
6 |
Correct |
35 ms |
23552 KB |
Output is correct |
7 |
Correct |
46 ms |
33144 KB |
Output is correct |
8 |
Correct |
28 ms |
3200 KB |
Output is correct |
9 |
Correct |
29 ms |
3320 KB |
Output is correct |
10 |
Correct |
29 ms |
3708 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
5 ms |
768 KB |
Output is correct |
2 |
Correct |
5 ms |
768 KB |
Output is correct |
3 |
Correct |
5 ms |
896 KB |
Output is correct |
4 |
Correct |
5 ms |
896 KB |
Output is correct |
5 |
Correct |
5 ms |
768 KB |
Output is correct |
6 |
Correct |
38 ms |
28408 KB |
Output is correct |
7 |
Correct |
38 ms |
28416 KB |
Output is correct |
8 |
Correct |
44 ms |
34844 KB |
Output is correct |
9 |
Correct |
42 ms |
33272 KB |
Output is correct |
10 |
Correct |
40 ms |
32120 KB |
Output is correct |
11 |
Correct |
35 ms |
23552 KB |
Output is correct |
12 |
Correct |
46 ms |
33144 KB |
Output is correct |
13 |
Correct |
28 ms |
3200 KB |
Output is correct |
14 |
Correct |
29 ms |
3320 KB |
Output is correct |
15 |
Correct |
29 ms |
3708 KB |
Output is correct |
16 |
Correct |
81 ms |
28920 KB |
Output is correct |
17 |
Correct |
234 ms |
29560 KB |
Output is correct |
18 |
Correct |
100 ms |
45304 KB |
Output is correct |
19 |
Correct |
114 ms |
3308 KB |
Output is correct |
20 |
Correct |
70 ms |
4800 KB |
Output is correct |
21 |
Correct |
402 ms |
106872 KB |
Output is correct |
22 |
Correct |
322 ms |
29816 KB |
Output is correct |
23 |
Correct |
479 ms |
3536 KB |
Output is correct |
24 |
Correct |
317 ms |
5368 KB |
Output is correct |
25 |
Correct |
468 ms |
170616 KB |
Output is correct |