#pragma GCC optimize ("Ofast")
#include<bits/stdc++.h>
using namespace std;
template < class S, class T> inline S chmin( S & a, T b) {
if ( a> b) {
a= b;
}
return a;
}
#define main dummy_main
int main( ) {
return 0 ;
}
#undef main
int dist[ 100 ] [ 100 ] ;
class Solution{
public :
int findTheCity( int n, vector< vector< int >> & edges, int distanceThreshold) {
int i;
int j;
int k;
int cnt;
int res = - 1 ;
int mn = 1073709056 ;
for ( i= ( 0 ) ; i< ( n) ; i++ ) {
for ( j= ( 0 ) ; j< ( n) ; j++ ) {
dist[ i] [ j] = 1073709056 ;
}
}
for ( i= ( 0 ) ; i< ( n) ; i++ ) {
dist[ i] [ i] = 0 ;
}
for ( i= ( 0 ) ; i< ( edges.size ( ) ) ; i++ ) {
j = edges[ i] [ 0 ] ;
k = edges[ i] [ 1 ] ;
dist[ j] [ k] = chmin( dist[ k] [ j] , edges[ i] [ 2 ] ) ;
}
for ( k= ( 0 ) ; k< ( n) ; k++ ) {
for ( i= ( 0 ) ; i< ( n) ; i++ ) {
for ( j= ( i+ 1 ) ; j< ( n) ; j++ ) {
dist[ i] [ j] = chmin( dist[ j] [ i] , dist[ i] [ k] + dist[ k] [ j] ) ;
}
}
}
for ( i= ( 0 ) ; i< ( n) ; i++ ) {
cnt = 0 ;
for ( j= ( 0 ) ; j< ( n) ; j++ ) {
if ( dist[ i] [ j] <= distanceThreshold) {
cnt++ ;
}
}
if ( cnt <= mn) {
mn = cnt;
res = i;
}
}
return res;
}
}
;
// cLay varsion 20200119-1
// --- original code ---
// #define main dummy_main
// {}
// #undef main
//
// int dist[100][100];
//
// class Solution {
// public:
// int findTheCity(int n, vector<vector<int>>& edges, int distanceThreshold) {
// int i, j, k, cnt, res = -1, mn = int_inf;
// rep(i,n) rep(j,n) dist[i][j] = int_inf;
// rep(i,n) dist[i][i] = 0;
// rep(i,edges.size()){
// j = edges[i][0];
// k = edges[i][1];
// dist[j][k] = dist[k][j] <?= edges[i][2];
// }
// rep(k,n) rep(i,n) rep(j,i+1,n) dist[i][j] = dist[j][i] <?= dist[i][k] + dist[k][j];
// rep(i,n){
// cnt = 0;
// rep(j,n) if(dist[i][j] <= distanceThreshold) cnt++;
// if(cnt <= mn) mn = cnt, res = i;
// }
// return res;
// }
// };
I3ByYWdtYSBHQ0Mgb3B0aW1pemUgKCJPZmFzdCIpCiNpbmNsdWRlPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnRlbXBsYXRlPGNsYXNzIFMsIGNsYXNzIFQ+IGlubGluZSBTIGNobWluKFMgJmEsIFQgYil7CiAgaWYoYT5iKXsKICAgIGE9YjsKICB9CiAgcmV0dXJuIGE7Cn0KI2RlZmluZSBtYWluIGR1bW15X21haW4KaW50IG1haW4oKXsKICByZXR1cm4gMDsKfQojdW5kZWYgbWFpbgppbnQgZGlzdFsxMDBdWzEwMF07CmNsYXNzIFNvbHV0aW9uewogIHB1YmxpYzoKICBpbnQgZmluZFRoZUNpdHkoaW50IG4sIHZlY3Rvcjx2ZWN0b3I8aW50Pj4mIGVkZ2VzLCBpbnQgZGlzdGFuY2VUaHJlc2hvbGQpewogICAgaW50IGk7CiAgICBpbnQgajsKICAgIGludCBrOwogICAgaW50IGNudDsKICAgIGludCByZXMgPSAtMTsKICAgIGludCBtbiA9IDEwNzM3MDkwNTY7CiAgICBmb3IoaT0oMCk7aTwobik7aSsrKXsKICAgICAgZm9yKGo9KDApO2o8KG4pO2orKyl7CiAgICAgICAgZGlzdFtpXVtqXSA9IDEwNzM3MDkwNTY7CiAgICAgIH0KICAgIH0KICAgIGZvcihpPSgwKTtpPChuKTtpKyspewogICAgICBkaXN0W2ldW2ldID0gMDsKICAgIH0KICAgIGZvcihpPSgwKTtpPChlZGdlcy5zaXplKCkpO2krKyl7CiAgICAgIGogPSBlZGdlc1tpXVswXTsKICAgICAgayA9IGVkZ2VzW2ldWzFdOwogICAgICBkaXN0W2pdW2tdID1jaG1pbihkaXN0W2tdW2pdLCBlZGdlc1tpXVsyXSk7CiAgICB9CiAgICBmb3Ioaz0oMCk7azwobik7aysrKXsKICAgICAgZm9yKGk9KDApO2k8KG4pO2krKyl7CiAgICAgICAgZm9yKGo9KGkrMSk7ajwobik7aisrKXsKICAgICAgICAgIGRpc3RbaV1bal0gPWNobWluKGRpc3Rbal1baV0sIGRpc3RbaV1ba10gKyBkaXN0W2tdW2pdKTsKICAgICAgICB9CiAgICAgIH0KICAgIH0KICAgIGZvcihpPSgwKTtpPChuKTtpKyspewogICAgICBjbnQgPSAwOwogICAgICBmb3Ioaj0oMCk7ajwobik7aisrKXsKICAgICAgICBpZihkaXN0W2ldW2pdIDw9IGRpc3RhbmNlVGhyZXNob2xkKXsKICAgICAgICAgIGNudCsrOwogICAgICAgIH0KICAgICAgfQogICAgICBpZihjbnQgPD0gbW4pewogICAgICAgIG1uID0gY250OwogICAgICAgIHJlcyA9IGk7CiAgICAgIH0KICAgIH0KICAgIHJldHVybiByZXM7CiAgfQp9CjsKLy8gY0xheSB2YXJzaW9uIDIwMjAwMTE5LTEKCi8vIC0tLSBvcmlnaW5hbCBjb2RlIC0tLQovLyAjZGVmaW5lIG1haW4gZHVtbXlfbWFpbgovLyB7fQovLyAjdW5kZWYgbWFpbgovLyAKLy8gaW50IGRpc3RbMTAwXVsxMDBdOwovLyAKLy8gY2xhc3MgU29sdXRpb24gewovLyBwdWJsaWM6Ci8vICAgaW50IGZpbmRUaGVDaXR5KGludCBuLCB2ZWN0b3I8dmVjdG9yPGludD4+JiBlZGdlcywgaW50IGRpc3RhbmNlVGhyZXNob2xkKSB7Ci8vICAgICBpbnQgaSwgaiwgaywgY250LCByZXMgPSAtMSwgbW4gPSBpbnRfaW5mOwovLyAgICAgcmVwKGksbikgcmVwKGosbikgZGlzdFtpXVtqXSA9IGludF9pbmY7Ci8vICAgICByZXAoaSxuKSBkaXN0W2ldW2ldID0gMDsKLy8gICAgIHJlcChpLGVkZ2VzLnNpemUoKSl7Ci8vICAgICAgIGogPSBlZGdlc1tpXVswXTsKLy8gICAgICAgayA9IGVkZ2VzW2ldWzFdOwovLyAgICAgICBkaXN0W2pdW2tdID0gZGlzdFtrXVtqXSA8Pz0gZWRnZXNbaV1bMl07Ci8vICAgICB9Ci8vICAgICByZXAoayxuKSByZXAoaSxuKSByZXAoaixpKzEsbikgZGlzdFtpXVtqXSA9IGRpc3Rbal1baV0gPD89IGRpc3RbaV1ba10gKyBkaXN0W2tdW2pdOwovLyAgICAgcmVwKGksbil7Ci8vICAgICAgIGNudCA9IDA7Ci8vICAgICAgIHJlcChqLG4pIGlmKGRpc3RbaV1bal0gPD0gZGlzdGFuY2VUaHJlc2hvbGQpIGNudCsrOwovLyAgICAgICBpZihjbnQgPD0gbW4pIG1uID0gY250LCByZXMgPSBpOwovLyAgICAgfQovLyAgICAgcmV0dXJuIHJlczsKLy8gICB9Ci8vIH07Cg==