Submission #586473

# Submission time Handle Problem Language Result Execution time Memory
586473 2022-06-30T10:07:45 Z krit3379 City Mapping (NOI18_citymapping) C++17
57 / 100
120 ms 24696 KB
#include<bits/stdc++.h>
#include "citymapping.h"
using namespace std;
#pragma GCC optimize("O3,unroll-loops")
#pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt")
#define N 1005

struct A{
    int a,b,w;
};

long long dis[N][N],dis1[N],ma,id,last,last_node;
vector<pair<long long,long long>> v,g[N];
vector<A> edge;
bitset<N> vis;

void dfs(int s,int f){
    vis[s]=true;
    for(auto [w,x]:g[s]){
        if(vis[x])continue;
        if(!f||dis[f][s]+dis[s][x]==dis[f][x])dfs(x,s),edge.push_back({s,x,w});
    }
}

void find_roads(int n,int q,int a[], int b[],int w[]){
    int i,j;
    if(q==500000){
        for(i=1;i<=n;i++)for(j=i+1;j<=n;j++){
            long long x=get_distance(i,j);
            dis[i][j]=dis[j][i]=x;
            g[i].push_back({x,j});
            g[j].push_back({x,i});
        }
        for(i=1;i<=n;i++)sort(g[i].begin(),g[i].end());
        dfs(1,0);
        for(i=0;i<edge.size();i++){
            a[i]=edge[i].a;
            b[i]=edge[i].b;
            w[i]=edge[i].w;
        }
    }
    else if(q==12000){
        for(i=2;i<=n;i++)dis1[i]=get_distance(1,i);
        for(i=1;i<=n;i++)if(dis1[i]>ma)ma=dis1[i],id=i;
        for(i=1;i<=n;i++)if(i!=id)v.push_back({get_distance(id,i),i});
        sort(v.begin(),v.end());
        last=0;
        last_node=id;
        for(i=0;i<v.size();i++){
            a[i]=last_node;
            b[i]=v[i].second;
            w[i]=v[i].first-last;
            last=v[i].first;
            last_node=v[i].second;
        }
    }
}

Compilation message

citymapping.cpp: In function 'void dfs(int, int)':
citymapping.cpp:21:74: warning: narrowing conversion of 'x' from 'std::tuple_element<1, std::pair<long long int, long long int> >::type' {aka 'long long int'} to 'int' [-Wnarrowing]
   21 |         if(!f||dis[f][s]+dis[s][x]==dis[f][x])dfs(x,s),edge.push_back({s,x,w});
      |                                                                          ^
citymapping.cpp:21:76: warning: narrowing conversion of 'w' from 'std::tuple_element<0, std::pair<long long int, long long int> >::type' {aka 'long long int'} to 'int' [-Wnarrowing]
   21 |         if(!f||dis[f][s]+dis[s][x]==dis[f][x])dfs(x,s),edge.push_back({s,x,w});
      |                                                                            ^
citymapping.cpp: In function 'void find_roads(int, int, int*, int*, int*)':
citymapping.cpp:36:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<A>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   36 |         for(i=0;i<edge.size();i++){
      |                 ~^~~~~~~~~~~~
citymapping.cpp:49:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<long long int, long long int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   49 |         for(i=0;i<v.size();i++){
      |                 ~^~~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 119 ms 24652 KB Correct: 498501 out of 500000 queries used.
2 Correct 107 ms 24632 KB Correct: 499500 out of 500000 queries used.
3 Correct 107 ms 24464 KB Correct: 492528 out of 500000 queries used.
4 Correct 98 ms 24544 KB Correct: 494515 out of 500000 queries used.
5 Correct 120 ms 24584 KB Correct: 498501 out of 500000 queries used.
# Verdict Execution time Memory Grader output
1 Correct 119 ms 24652 KB Correct: 498501 out of 500000 queries used.
2 Correct 107 ms 24632 KB Correct: 499500 out of 500000 queries used.
3 Correct 107 ms 24464 KB Correct: 492528 out of 500000 queries used.
4 Correct 98 ms 24544 KB Correct: 494515 out of 500000 queries used.
5 Correct 120 ms 24584 KB Correct: 498501 out of 500000 queries used.
6 Correct 96 ms 24520 KB Correct: 495510 out of 500000 queries used.
7 Correct 97 ms 24696 KB Correct: 497503 out of 500000 queries used.
8 Correct 98 ms 24552 KB Correct: 497503 out of 500000 queries used.
9 Correct 95 ms 24560 KB Correct: 495510 out of 500000 queries used.
10 Correct 111 ms 24472 KB Correct: 496506 out of 500000 queries used.
# Verdict Execution time Memory Grader output
1 Correct 1 ms 468 KB Correct: 1980 out of 12000 queries used.
2 Correct 1 ms 468 KB Correct: 1984 out of 12000 queries used.
3 Correct 1 ms 468 KB Correct: 1998 out of 12000 queries used.
4 Correct 1 ms 468 KB Correct: 1984 out of 12000 queries used.
5 Correct 1 ms 468 KB Correct: 1980 out of 12000 queries used.
# Verdict Execution time Memory Grader output
1 Correct 1 ms 468 KB Correct: 1980 out of 12000 queries used.
2 Correct 1 ms 468 KB Correct: 1984 out of 12000 queries used.
3 Correct 1 ms 468 KB Correct: 1998 out of 12000 queries used.
4 Correct 1 ms 468 KB Correct: 1984 out of 12000 queries used.
5 Correct 1 ms 468 KB Correct: 1980 out of 12000 queries used.
6 Correct 1 ms 576 KB Correct: 1994 out of 12000 queries used.
7 Correct 1 ms 468 KB Correct: 1990 out of 12000 queries used.
8 Correct 1 ms 468 KB Correct: 1998 out of 12000 queries used.
9 Correct 1 ms 468 KB Correct: 1992 out of 12000 queries used.
10 Correct 1 ms 468 KB Correct: 1986 out of 12000 queries used.
# Verdict Execution time Memory Grader output
1 Correct 119 ms 24652 KB Correct: 498501 out of 500000 queries used.
2 Correct 107 ms 24632 KB Correct: 499500 out of 500000 queries used.
3 Correct 107 ms 24464 KB Correct: 492528 out of 500000 queries used.
4 Correct 98 ms 24544 KB Correct: 494515 out of 500000 queries used.
5 Correct 120 ms 24584 KB Correct: 498501 out of 500000 queries used.
6 Correct 96 ms 24520 KB Correct: 495510 out of 500000 queries used.
7 Correct 97 ms 24696 KB Correct: 497503 out of 500000 queries used.
8 Correct 98 ms 24552 KB Correct: 497503 out of 500000 queries used.
9 Correct 95 ms 24560 KB Correct: 495510 out of 500000 queries used.
10 Correct 111 ms 24472 KB Correct: 496506 out of 500000 queries used.
11 Correct 1 ms 468 KB Correct: 1980 out of 12000 queries used.
12 Correct 1 ms 468 KB Correct: 1984 out of 12000 queries used.
13 Correct 1 ms 468 KB Correct: 1998 out of 12000 queries used.
14 Correct 1 ms 468 KB Correct: 1984 out of 12000 queries used.
15 Correct 1 ms 468 KB Correct: 1980 out of 12000 queries used.
16 Correct 1 ms 576 KB Correct: 1994 out of 12000 queries used.
17 Correct 1 ms 468 KB Correct: 1990 out of 12000 queries used.
18 Correct 1 ms 468 KB Correct: 1998 out of 12000 queries used.
19 Correct 1 ms 468 KB Correct: 1992 out of 12000 queries used.
20 Correct 1 ms 468 KB Correct: 1986 out of 12000 queries used.
21 Incorrect 1 ms 468 KB Reported list of edges differ from actual.
22 Halted 0 ms 0 KB -