답안 #1106544

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
1106544 2024-10-30T15:55:46 Z modwwe Museum (CEOI17_museum) C++17
100 / 100
244 ms 9040 KB
#pragma GCC optimize("Ofast,unroll-loops")
//#pragma GCC optimize("conserve-stack")
#include<bits/stdc++.h>
//#define int long long
#define ll long long
#define down cout<<'\n';
#define debug cout<<" cucuucucuuu",down
#define NHP     ios_base::sync_with_stdio(0);cout.tie(0);cin.tie(0);
#define modwwe  int t;cin>>t; while(t--)
#define bit(i,j) (i>>j&1)
#define sobit(a) __builtin_popcountll(a)
#define task "test"
#define fin(x) freopen(x".inp","r",stdin)
#define fou(x) freopen(x".ans","w",stdout)
#define pb push_back
#define mask(i) (1<<i)
#define checktime   cerr << (double)clock() / CLOCKS_PER_SEC * 1000  << " ms";
using namespace std;
#define getchar_unlocked getchar

inline int scan()
{
    char c = getchar_unlocked();
    int x = 0;
    while (c < '0' || c > '9')
    {
        c = getchar_unlocked();
    }
    while (c >= '0' && c <= '9')
    {
        x = (x << 1) + (x << 3) + c - '0';
        c = getchar_unlocked();
    }
    return x;
};
void phongbeo();
const int inf = 1e9;
const int mod2 = -1e9+7;
const int  mod1 = 998244353;
const int base=67;
int add(int x,int y)
{
    if(x+y>=mod2) x-=mod2;
    if(x+y<0) x+=mod2;
    return x+y;
}
struct icd
{
    long double a;
    int b;
};
struct ib
{
    int a;
    int b;
};
struct ic
{
    int a, b, c, d;
};
struct ie
{
    int a, b, c, d, e;

};

int  n, m, s1, s2, s4, s3, sf, k, s5, s6, mx, s7, s8, s9, mx2, res, dem2 = 0, dem = 0, s33, dem3, dem4, mid, l2, r2, center;
int  i, s10, s12,k1,k2,k3,s11,limit,w,l,r,last,root,cost;
int kk;
int el = 19;

main()
{
    if(fopen(task".inp","r"))
    {
        fin(task);
        //fou(task);
    }
      NHP
    /// cin>>s1;
    // modwwe
    phongbeo(),down
    // checktime
}
vector<int> dp[100001][2];
int sz[100001];
vector<ib> v[100001];
void dfs(int x,int y)
{
    sz[x]=1;
     for(auto f:v[x])
       if(f.a!=y)
          dfs(f.a,x),sz[x]+=sz[f.a];
for(int f=0;f<2;f++)
dp[x][f].resize(sz[x]+1);
for(int j=0;j<=sz[x];j++)
    for(int f=0;f<2;f++)
    dp[x][f][j]=inf;
dp[x][0][0]=0;
dp[x][0][1]=0;
dp[x][1][1]=0;
sz[x]=1;

 for(auto tt:v[x])
     if(tt.a!=y)
  {
      int f=tt.a;
      for(int j=sz[x];j>=0;j--)
        for(int z=1;z<=sz[f];z++)
        for(int g=0;g<min(j+1,2);g++)
        for(int g2=0;g2<=1-g;g2++)
      {
          int total=tt.b;
           if(!g2)total=tt.b*2;
                dp[x][g|g2][j+z]=min(dp[x][g|g2][j+z],dp[x][g][j]+dp[f][g2][z]+total);
      }
      vector<int>().swap(dp[f][0]);
      vector<int>().swap(dp[f][1]);
      sz[x]+=sz[f];
  }
}
void phongbeo()
{
    cin>>n>>m>>root;
    for(int i=1;i<n;i++)
         cin>>l>>r>>s2,
    v[l].pb({r,s2}),
    v[r].pb({l,s2});
    dfs(root,0);
cout<<dp[root][1][m];
}

Compilation message

museum.cpp:72:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
   72 | main()
      | ^~~~
museum.cpp: In function 'int main()':
museum.cpp:13:23: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   13 | #define fin(x) freopen(x".inp","r",stdin)
      |                ~~~~~~~^~~~~~~~~~~~~~~~~~~
museum.cpp:76:9: note: in expansion of macro 'fin'
   76 |         fin(task);
      |         ^~~
# 결과 실행 시간 메모리 Grader output
1 Correct 3 ms 7760 KB Output is correct
2 Correct 3 ms 7788 KB Output is correct
3 Correct 3 ms 7760 KB Output is correct
4 Correct 3 ms 7760 KB Output is correct
5 Correct 3 ms 7760 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 182 ms 8560 KB Output is correct
2 Correct 179 ms 8436 KB Output is correct
3 Correct 238 ms 9040 KB Output is correct
4 Correct 204 ms 8520 KB Output is correct
5 Correct 179 ms 8676 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 182 ms 8560 KB Output is correct
2 Correct 179 ms 8436 KB Output is correct
3 Correct 238 ms 9040 KB Output is correct
4 Correct 204 ms 8520 KB Output is correct
5 Correct 179 ms 8676 KB Output is correct
6 Correct 174 ms 8272 KB Output is correct
7 Correct 211 ms 8788 KB Output is correct
8 Correct 219 ms 8784 KB Output is correct
9 Correct 200 ms 8540 KB Output is correct
10 Correct 177 ms 8720 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 3 ms 7760 KB Output is correct
2 Correct 3 ms 7788 KB Output is correct
3 Correct 3 ms 7760 KB Output is correct
4 Correct 3 ms 7760 KB Output is correct
5 Correct 3 ms 7760 KB Output is correct
6 Correct 182 ms 8560 KB Output is correct
7 Correct 179 ms 8436 KB Output is correct
8 Correct 238 ms 9040 KB Output is correct
9 Correct 204 ms 8520 KB Output is correct
10 Correct 179 ms 8676 KB Output is correct
11 Correct 174 ms 8272 KB Output is correct
12 Correct 211 ms 8788 KB Output is correct
13 Correct 219 ms 8784 KB Output is correct
14 Correct 200 ms 8540 KB Output is correct
15 Correct 177 ms 8720 KB Output is correct
16 Correct 183 ms 8504 KB Output is correct
17 Correct 176 ms 8468 KB Output is correct
18 Correct 198 ms 8752 KB Output is correct
19 Correct 204 ms 8784 KB Output is correct
20 Correct 184 ms 8532 KB Output is correct
21 Correct 209 ms 8776 KB Output is correct
22 Correct 172 ms 8528 KB Output is correct
23 Correct 204 ms 8784 KB Output is correct
24 Correct 173 ms 8472 KB Output is correct
25 Correct 244 ms 8972 KB Output is correct