답안 #367504

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
367504 2021-02-17T14:23:18 Z cpp219 Uzastopni (COCI15_uzastopni) C++14
136 / 160
345 ms 65540 KB
#include <bits/stdc++.h>
#define ll int
#define ld long double
#define fs first
#define sc second
using namespace std;
const ll N = 1e4 + 9;
const ll inf = 1e9 + 7;
typedef pair<int,int> LL;
vector<ll> g[N];
ll n,v[N],x,y;
bitset<110> flag[N][110];
vector<LL> s[N];
void DFS(ll u){
    for (auto i : g[u]) DFS(i); vector<ll> q[N];
    for (auto i : g[u]){
        for (auto j : s[i]) q[j.fs].push_back(j.sc);
    }
    for (ll l = 101;l > 0;l--){
        if (l == v[u]){
            flag[u][l] |= flag[u][l + 1]; flag[u][l].set(l);
        }
        else{
            for (auto i : q[l]){
                if (l > v[u] || i < v[u]){
                    flag[u][l] |= flag[u][i + 1]; flag[u][l].set(i);
                }
            }
        }
        for (ll i = 100;i >= l;i--) if (flag[u][l][i] == 1 && l <= v[u] && i >= v[u]) s[u].push_back({l,i});
    }
}

int main(){
    ios_base::sync_with_stdio(0);
    cin.tie(0); cout.tie(0);
    #define task "tst"
    if (fopen(task".INP","r")){
        freopen(task".INP","r",stdin);
        //freopen(task".OUT","w",stdout);
    }
    cin>>n;
    for (ll i = 1;i <= n;i++) cin>>v[i];
    for (ll i = 1;i < n;i++) cin>>x>>y,g[x].push_back(y);
    DFS(1); cout<<s[1].size();
}

Compilation message

uzastopni.cpp: In function 'void DFS(int)':
uzastopni.cpp:15:5: warning: this 'for' clause does not guard... [-Wmisleading-indentation]
   15 |     for (auto i : g[u]) DFS(i); vector<ll> q[N];
      |     ^~~
uzastopni.cpp:15:33: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'for'
   15 |     for (auto i : g[u]) DFS(i); vector<ll> q[N];
      |                                 ^~~~~~
uzastopni.cpp: In function 'int main()':
uzastopni.cpp:39:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)', declared with attribute warn_unused_result [-Wunused-result]
   39 |         freopen(task".INP","r",stdin);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 4 ms 2796 KB Output is correct
2 Correct 5 ms 3052 KB Output is correct
3 Correct 5 ms 3308 KB Output is correct
4 Correct 5 ms 3052 KB Output is correct
5 Correct 6 ms 3436 KB Output is correct
6 Correct 13 ms 17516 KB Output is correct
7 Correct 13 ms 17900 KB Output is correct
8 Correct 17 ms 17772 KB Output is correct
9 Correct 5 ms 2668 KB Output is correct
10 Correct 5 ms 2668 KB Output is correct
11 Correct 333 ms 23248 KB Output is correct
12 Correct 332 ms 23808 KB Output is correct
13 Correct 335 ms 24044 KB Output is correct
14 Runtime error 59 ms 65540 KB Execution killed with signal 9
15 Runtime error 47 ms 65536 KB Execution killed with signal 9
16 Runtime error 50 ms 65540 KB Execution killed with signal 9
17 Correct 330 ms 23916 KB Output is correct
18 Correct 338 ms 24172 KB Output is correct
19 Correct 333 ms 23788 KB Output is correct
20 Correct 345 ms 23788 KB Output is correct