Submission #376660

# Submission time Handle Problem Language Result Execution time Memory
376660 2021-03-12T00:14:22 Z daniel920712 Designated Cities (JOI19_designated_cities) C++14
13 / 100
653 ms 85868 KB
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <vector>
#include <map>
#include <set>

using namespace std;
vector < pair < long long , long long > > Next[200005];
map < long long , long long > all[200005];
set < long long > vis[200005];
long long ans[200005];
long long xx[200005];
long long how[200005];
long long N=0;
pair < long long , long long > A,B;
void F(long long here,long long fa)
{
    for(auto i:Next[here])
    {
        if(i.first!=fa)
        {
            ans[1]+=i.second;
            F(i.first,here);
        }
    }
}
void F2(long long here,long long fa)
{
    for(auto i:Next[here])
    {
        if(i.first!=fa)
        {
            ans[i.first]=ans[here]-all[here][i.first]+all[i.first][here];
            F2(i.first,here);
        }
    }
}
void F3(long long here,long long fa)
{
    for(auto i:Next[here])
    {
        if(i.first!=fa)
        {
            vis[here].insert(i.first);
            F3(i.first,here);
        }
    }
}
pair < long long , long long > F4(long long here,long long fa,long long con)
{
    pair < long long , long long > a=make_pair(con,here),b=make_pair(0,here),tt;
    for(auto i:Next[here])
    {
        if(i.first!=fa)
        {
            tt=F4(i.first,here,con+i.second);
            if(tt>a)
            {
                b=a;
                a=tt;
            }
            else if(tt>b)
            {
                b=tt;
            }
        }
    }
    A=a;
    B=b;
    return a;
}

int main()
{
    long long M,i,j,k,a,b,c,d,where;
    scanf("%lld",&N);

    for(i=1;i<N;i++)
    {

        scanf("%lld %lld %lld %lld",&a,&b,&c,&d);
        Next[a].push_back(make_pair(b,c));
        Next[b].push_back(make_pair(a,d));
        all[a][b]=c;
        all[b][a]=d;
    }
    for(i=1;i<=N;i++) xx[i]=1e18;
    if(N<=16)
    {
        for(i=0;i<(1<<N);i++)
        {
            a=0;
            b=0;
            for(j=1;j<=N;j++) vis[j].clear();
            for(j=0;j<N;j++)
            {
                if(i&(1<<j))
                {
                    F3(j+1,-1);
                    a++;
                }
            }
            for(j=1;j<=N;j++) for(auto k:Next[j]) if(vis[j].find(k.first)==vis[j].end()) b+=all[k.first][j];
            xx[a]=min(xx[a],b);
        }
        scanf("%lld",&M);
        while(M--)
        {
            scanf("%lld",&a);
            printf("%lld\n",xx[a]);
        }
    }
    else
    {
        F(1,-1);
        F2(1,-1);
        how[1]=1e18;
        for(i=1;i<=N;i++)
        {
            how[1]=min(how[1],ans[i]);
            if(how[1]==ans[i]) where=i;
        }

        F4(1,-1,0);
        how[2]=how[1]-A.first-B.first;
        scanf("%lld",&M);
        while(M--)
        {
            scanf("%lld",&a);
            printf("%lld\n",how[a]);
        }


    }

    return 0;
}

Compilation message

designated_cities.cpp: In function 'int main()':
designated_cities.cpp:76:21: warning: unused variable 'k' [-Wunused-variable]
   76 |     long long M,i,j,k,a,b,c,d,where;
      |                     ^
designated_cities.cpp:76:31: warning: variable 'where' set but not used [-Wunused-but-set-variable]
   76 |     long long M,i,j,k,a,b,c,d,where;
      |                               ^~~~~
designated_cities.cpp:77:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   77 |     scanf("%lld",&N);
      |     ~~~~~^~~~~~~~~~~
designated_cities.cpp:82:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   82 |         scanf("%lld %lld %lld %lld",&a,&b,&c,&d);
      |         ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
designated_cities.cpp:107:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  107 |         scanf("%lld",&M);
      |         ~~~~~^~~~~~~~~~~
designated_cities.cpp:110:18: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  110 |             scanf("%lld",&a);
      |             ~~~~~^~~~~~~~~~~
designated_cities.cpp:127:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  127 |         scanf("%lld",&M);
      |         ~~~~~^~~~~~~~~~~
designated_cities.cpp:130:18: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  130 |             scanf("%lld",&a);
      |             ~~~~~^~~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 16 ms 23788 KB Output is correct
2 Correct 206 ms 23788 KB Output is correct
3 Correct 183 ms 23788 KB Output is correct
4 Correct 203 ms 23916 KB Output is correct
5 Correct 215 ms 23916 KB Output is correct
6 Correct 199 ms 23788 KB Output is correct
7 Correct 190 ms 23916 KB Output is correct
8 Correct 213 ms 23916 KB Output is correct
9 Correct 193 ms 23788 KB Output is correct
10 Correct 182 ms 23916 KB Output is correct
11 Correct 219 ms 23916 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 16 ms 23788 KB Output is correct
2 Correct 504 ms 62316 KB Output is correct
3 Correct 545 ms 85128 KB Output is correct
4 Correct 496 ms 62188 KB Output is correct
5 Correct 533 ms 62304 KB Output is correct
6 Correct 511 ms 65516 KB Output is correct
7 Correct 590 ms 61660 KB Output is correct
8 Correct 546 ms 85868 KB Output is correct
9 Correct 653 ms 61396 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 16 ms 23788 KB Output is correct
2 Incorrect 525 ms 62300 KB Output isn't correct
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 16 ms 23788 KB Output is correct
2 Correct 206 ms 23788 KB Output is correct
3 Correct 183 ms 23788 KB Output is correct
4 Correct 203 ms 23916 KB Output is correct
5 Correct 215 ms 23916 KB Output is correct
6 Correct 199 ms 23788 KB Output is correct
7 Correct 190 ms 23916 KB Output is correct
8 Correct 213 ms 23916 KB Output is correct
9 Correct 193 ms 23788 KB Output is correct
10 Correct 182 ms 23916 KB Output is correct
11 Correct 219 ms 23916 KB Output is correct
12 Correct 16 ms 23788 KB Output is correct
13 Incorrect 19 ms 24300 KB Output isn't correct
14 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 16 ms 23788 KB Output is correct
2 Correct 504 ms 62316 KB Output is correct
3 Correct 545 ms 85128 KB Output is correct
4 Correct 496 ms 62188 KB Output is correct
5 Correct 533 ms 62304 KB Output is correct
6 Correct 511 ms 65516 KB Output is correct
7 Correct 590 ms 61660 KB Output is correct
8 Correct 546 ms 85868 KB Output is correct
9 Correct 653 ms 61396 KB Output is correct
10 Correct 16 ms 23788 KB Output is correct
11 Incorrect 525 ms 62300 KB Output isn't correct
12 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 16 ms 23788 KB Output is correct
2 Correct 206 ms 23788 KB Output is correct
3 Correct 183 ms 23788 KB Output is correct
4 Correct 203 ms 23916 KB Output is correct
5 Correct 215 ms 23916 KB Output is correct
6 Correct 199 ms 23788 KB Output is correct
7 Correct 190 ms 23916 KB Output is correct
8 Correct 213 ms 23916 KB Output is correct
9 Correct 193 ms 23788 KB Output is correct
10 Correct 182 ms 23916 KB Output is correct
11 Correct 219 ms 23916 KB Output is correct
12 Correct 16 ms 23788 KB Output is correct
13 Correct 504 ms 62316 KB Output is correct
14 Correct 545 ms 85128 KB Output is correct
15 Correct 496 ms 62188 KB Output is correct
16 Correct 533 ms 62304 KB Output is correct
17 Correct 511 ms 65516 KB Output is correct
18 Correct 590 ms 61660 KB Output is correct
19 Correct 546 ms 85868 KB Output is correct
20 Correct 653 ms 61396 KB Output is correct
21 Correct 16 ms 23788 KB Output is correct
22 Incorrect 525 ms 62300 KB Output isn't correct
23 Halted 0 ms 0 KB -