⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bus.cpp

📁 My solutions to IOI problems, not all, but many off them...
💻 CPP
字号:
/*
Alfonso Alfonso Peterssen
11 - 6 - 2008
IOI 2002 "Bus Terminals"
*/
#include <cstdio>
#include <algorithm>

using std::sort;

#define REP( i, n ) \
    for ( int i = 0; i < (n); i++ )

const int MAXV = 500;

int V, diam;
int X[MAXV];
int Y[MAXV];
int idx[MAXV];
int D[MAXV][MAXV];
int src, hi;

bool comp( const int &i, const int &j ) {
    return D[src][i] > D[src][j]; // reverse
}

int main() {

    scanf( "%d", &V );
    REP( i, V ) {
        scanf( "%d %d", &X[i], &Y[i] );
        idx[i] = i;
    }

    REP( i, V )
    REP( j, i )
        D[i][j] = D[j][i] = abs( X[i] - X[j] ) + abs( Y[i] - Y[j] );

    diam = 1000000000;
    REP( i, V ) {
        src = i;
        sort( idx, idx + V, comp );
        REP( j, i )
            for ( int k = hi = 0; k < V; k++ )
                if ( D[ idx[k] ][j] > D[ idx[hi] ][j] ) {
                    diam <?= D[ idx[k] ][i] + D[ idx[hi] ][j] + D[i][j];
                    hi = k;
                }
    }

    printf( "%d\n", diam );

    return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -