Submission #121486

# Submission time Handle Problem Language Result Execution time Memory
121486 2019-06-26T14:35:38 Z baqargam Tropical Garden (IOI11_garden) C++14
69 / 100
5000 ms 28912 KB
#include<bits/stdc++.h>
#include "garden.h"
#include "gardenlib.h"

using namespace std;

int a,k,n,m,q,p,v1[300005],sz,sz1,sz2,st,ch,res;
bool fx[300005];
vector<pair<int,int> >v[150005];
vector<int>rv[300005];
set<int>s;

void cch(int x,int dis,int st){
    for(int i=0;i<rv[x].size();i++){
        if(rv[x][i]==st) {sz=dis+1;return;}
        cch(rv[x][i],dis+1,st);
    }
}

void dfs(int x,int dis,int st){
    //cout<<st<<" "<<x<<" "<<dis<<" "<<k<<" "<<sz<<endl;
    if(x%2==0 && abs(k-dis)%sz==0 && dis<=k)
    {
        res+=(1^fx[x]);
        fx[x]=1;
    }
    for(int i=0;i<rv[x].size();i++){
        if(rv[x][i]==st) continue;
        dfs(rv[x][i],dis+1,st);
    }
}

void count_routes(int N, int M, int P, int R[][2], int Q, int G[])
{
    int n=N,m=M,p=P;
    for(int i=0;i<m;i++){///grafi1
        v[R[i][0]].push_back({i,R[i][1]});
        v[R[i][1]].push_back({i,R[i][0]});
    }
    for(int i=0;i<n;i++){
        sort(v[i].begin(),v[i].end());
    }
    for(int i=0;i<n;i++){///grafi2
        if(v[i].size()==1)
        {
            int to=v[i][0].second;
            int val=v[i][0].first;
            if(v[to][0].first==val)
                v1[2*i+1]=2*to+1;
            else
                v1[2*i+1]=2*to;

            if(v[to][0].first==val)
                v1[2*i]=2*to+1;
            else
                v1[2*i]=2*to;
        }
        else
        {
            int to=v[i][0].second;
            int val=v[i][0].first;
//            cout<<i<<" "<<to<<" "<<val<<" "<<v[to][0].first<<endl;
            if(v[to][0].first==val)
                v1[2*i]=2*to+1;
            else
                v1[2*i]=2*to;

            to=v[i][1].second;
            val=v[i][1].first;
//            cout<<i<<" "<<to<<" "<<val<<" "<<v[to][0].first<<endl;
            if(v[to][0].first==val)
                v1[2*i+1]=2*to+1;
            else
                v1[2*i+1]=2*to;

        }
    }

    for(int i=0;i<2*n;i++){
        //cout<<i<<" "<<v1[i]<<endl;
        rv[v1[i]].push_back(i);
    }


    sz=1000000003;cch(2*p,0,2*p);sz1=sz;
    sz=1000000003;cch(2*p+1,0,2*p+1);sz2=sz;

    for(int i=0; i<Q; i++)
    {
        k=G[i];
        for(int j=0;j<2*n;j++)
            fx[j]=0;
        res=0;
        sz=sz1;dfs(2*p,0,2*p);
        sz=sz2;dfs(2*p+1,0,2*p+1);
        answer(res);
    }
}

Compilation message

garden.cpp: In function 'void cch(int, int, int)':
garden.cpp:14:18: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(int i=0;i<rv[x].size();i++){
                 ~^~~~~~~~~~~~~
garden.cpp: In function 'void dfs(int, int, int)':
garden.cpp:27:18: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(int i=0;i<rv[x].size();i++){
                 ~^~~~~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 12 ms 11128 KB Output is correct
2 Correct 12 ms 11072 KB Output is correct
3 Correct 12 ms 10972 KB Output is correct
4 Correct 11 ms 11000 KB Output is correct
5 Correct 12 ms 10972 KB Output is correct
6 Correct 13 ms 11172 KB Output is correct
7 Correct 14 ms 10936 KB Output is correct
8 Correct 15 ms 11048 KB Output is correct
9 Correct 14 ms 11228 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 12 ms 11128 KB Output is correct
2 Correct 12 ms 11072 KB Output is correct
3 Correct 12 ms 10972 KB Output is correct
4 Correct 11 ms 11000 KB Output is correct
5 Correct 12 ms 10972 KB Output is correct
6 Correct 13 ms 11172 KB Output is correct
7 Correct 14 ms 10936 KB Output is correct
8 Correct 15 ms 11048 KB Output is correct
9 Correct 14 ms 11228 KB Output is correct
10 Correct 12 ms 10872 KB Output is correct
11 Correct 24 ms 13348 KB Output is correct
12 Correct 44 ms 15164 KB Output is correct
13 Correct 78 ms 28912 KB Output is correct
14 Correct 149 ms 23668 KB Output is correct
15 Correct 200 ms 25036 KB Output is correct
16 Correct 155 ms 22188 KB Output is correct
17 Correct 146 ms 21220 KB Output is correct
18 Correct 50 ms 15264 KB Output is correct
19 Correct 147 ms 24692 KB Output is correct
20 Correct 204 ms 25080 KB Output is correct
21 Correct 178 ms 22032 KB Output is correct
22 Correct 167 ms 21284 KB Output is correct
23 Correct 174 ms 25904 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 12 ms 11128 KB Output is correct
2 Correct 12 ms 11072 KB Output is correct
3 Correct 12 ms 10972 KB Output is correct
4 Correct 11 ms 11000 KB Output is correct
5 Correct 12 ms 10972 KB Output is correct
6 Correct 13 ms 11172 KB Output is correct
7 Correct 14 ms 10936 KB Output is correct
8 Correct 15 ms 11048 KB Output is correct
9 Correct 14 ms 11228 KB Output is correct
10 Correct 12 ms 10872 KB Output is correct
11 Correct 24 ms 13348 KB Output is correct
12 Correct 44 ms 15164 KB Output is correct
13 Correct 78 ms 28912 KB Output is correct
14 Correct 149 ms 23668 KB Output is correct
15 Correct 200 ms 25036 KB Output is correct
16 Correct 155 ms 22188 KB Output is correct
17 Correct 146 ms 21220 KB Output is correct
18 Correct 50 ms 15264 KB Output is correct
19 Correct 147 ms 24692 KB Output is correct
20 Correct 204 ms 25080 KB Output is correct
21 Correct 178 ms 22032 KB Output is correct
22 Correct 167 ms 21284 KB Output is correct
23 Correct 174 ms 25904 KB Output is correct
24 Correct 13 ms 10972 KB Output is correct
25 Correct 190 ms 13408 KB Output is correct
26 Correct 194 ms 15356 KB Output is correct
27 Execution timed out 5039 ms 28476 KB Time limit exceeded
28 Halted 0 ms 0 KB -