답안 #890198

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
890198 2023-12-20T16:46:59 Z cpptowin Uzastopni (COCI15_uzastopni) C++17
32 / 160
197 ms 60660 KB
#include<bits/stdc++.h>
#define fo(i,d,c) for(int i=d;i<=c;i++)
#define fod(i,c,d) for(int i=c;i>=d;i--)
#define maxn 1000010
#define N 1010
#define fi first
#define se second
#define pb emplace_back
#define en cout<<"\n";
#define inf 1000000000
#define pii pair<int,int>
#define vii vector<pii>
#define lb(x) x&-x
#define bit(i,j) ((i>>j)&1)
#define offbit(i,j) (i^(1<<j))
#define onbit(i,j) (i|(1<<j))
#define vi vector<int>
template <typename T1, typename T2> bool minimize(T1 &a, T2 b){if (a > b) {a = b; return true;} return false;}
template <typename T1, typename T2> bool maximize(T1 &a, T2 b){if (a < b) {a = b; return true;} return false;}
using namespace std;
bitset<105> dp[10010][110];
vi ke[maxn];
int v[maxn];
int n;
void dfs(int u)
{
    bitset<105> f[110];
    dp[u][v[u]][v[u]] = 1;
    for(int v : ke[u])
    {
        dfs(v);
        fo(i,1,100) f[i] |= dp[v][i];
    }
    fo(i,1,100) fo(j,1,100)
    {
        if(f[i + 1][j] and i == v[u]) dp[u][i][j] = 1;
        if(f[i][j - 1] and j == v[u]) dp[u][i][j] = 1;
        if(f[i][v[u] - 1] and f[v[u] + 1][j]) dp[u][i][j] = 1;
    }
}
main()
{
    #define name "TASK"
    if(fopen(name".inp","r"))
    {
       freopen(name".inp","r",stdin);
       freopen(name".out","w",stdout);
    }
    ios_base::sync_with_stdio(false);cin.tie(NULL);
    cin >> n;
    fo(i,1,n) cin >> v[i];
    fo(i,1,n - 1)
    {
        int u,v;
        cin >> u >> v;
        ke[u].pb(v);
    }
    dfs(1);
//    cout << dp[2][1][1] << "\n";
    int ans = 0;
    fo(i,1,100) ans += dp[1][i].count();
    cout << ans;
}

Compilation message

uzastopni.cpp:41:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
   41 | main()
      | ^~~~
uzastopni.cpp: In function 'int main()':
uzastopni.cpp:46:15: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   46 |        freopen(name".inp","r",stdin);
      |        ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
uzastopni.cpp:47:15: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   47 |        freopen(name".out","w",stdout);
      |        ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Incorrect 6 ms 26968 KB Output isn't correct
2 Incorrect 7 ms 26972 KB Output isn't correct
3 Incorrect 7 ms 26972 KB Output isn't correct
4 Correct 8 ms 26972 KB Output is correct
5 Incorrect 7 ms 27144 KB Output isn't correct
6 Correct 8 ms 27096 KB Output is correct
7 Correct 7 ms 27228 KB Output is correct
8 Correct 7 ms 27228 KB Output is correct
9 Incorrect 7 ms 26972 KB Output isn't correct
10 Incorrect 7 ms 26972 KB Output isn't correct
11 Runtime error 160 ms 43144 KB Memory limit exceeded
12 Runtime error 159 ms 43092 KB Memory limit exceeded
13 Runtime error 161 ms 43044 KB Memory limit exceeded
14 Runtime error 171 ms 60660 KB Memory limit exceeded
15 Runtime error 169 ms 60496 KB Memory limit exceeded
16 Runtime error 167 ms 60500 KB Memory limit exceeded
17 Runtime error 197 ms 43348 KB Memory limit exceeded
18 Runtime error 158 ms 43000 KB Memory limit exceeded
19 Runtime error 156 ms 42836 KB Memory limit exceeded
20 Runtime error 156 ms 42964 KB Memory limit exceeded