
About the author
Mallikarjuna Mallisetty
General programming
Mallikarjuna shares practical programming tutorials and foundational concepts designed to help developers learn by building and experimenting.
View LinkedIn profile ↗#include <stdio.h>
#define INF 1000000
void floydWarshall(int n, int dist[n][n]) {
for (int k = 0; k < n; k++)
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++)
if (dist[i][k] + dist[k][j] < dist[i][j])
dist[i][j] = dist[i][k] + dist[k][j];
}
int findTheCity(int n, int edges[][3], int edgesSize, int distanceThreshold) {
int dist[n][n];
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++)
dist[i][j] = (i == j) ? 0 : INF;
for (int i = 0; i < edgesSize; i++) {
int u = edges[i][0], v = edges[i][1], w = edges[i][2];
dist[u][v] = w;
dist[v][u] = w;
}
floydWarshall(n, dist);
int result = -1, minReachable = n;
for (int i = 0; i < n; i++) {
int count = 0;
for (int j = 0; j < n; j++)
if (i != j && dist[i][j] <= distanceThreshold)
count++;
if (count <= minReachable) {
minReachable = count;
result = i;
}
}
return result;
}
int main() {
int edges1[][3] = {{0,1,3},{1,2,1},{1,3,4},{2,3,1}};
int result1 = findTheCity(4, edges1, 4, 4);
printf("%d\n", result1); // Output: 3
int edges2[][3] = {{0,1,2},{0,4,8},{1,2,3},{1,4,2},{2,3,1},{3,4,1}};
int result2 = findTheCity(5, edges2, 6, 2);
printf("%d\n", result2); // Output: 0
return 0;
}