RT,代码如下:
# include<bits/stdc++.h>
# define int long long
# define endl '\n'
# define Max ((int) (2e2 + 5))
using namespace std;
int n, m, g[Max][Max], cnt[Max][Max];
bool flag = true;
signed main()
{
ios::sync_with_stdio(false);
cin.tie(0), cout.tie(0);
cin >> n >> m;
memset(g, 0x3f, sizeof g);
for (int i = 1; i <= m; i++)
{
int u, v, w;
cin >> u >> v >> w;
g[u][v] = g[v][u] = w;
}
for (int k = 1; k <= n; k++)
{
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= n; j++)
{
if (g[i][j] == g[i][k] + g[k][j])
{
cnt[i][j]++;
cnt[j][i]++;
}
else if (g[i][j] > g[i][k] + g[k][j])
{
g[i][j] = g[j][i] = g[i][k] + g[k][j];
cnt[i][j] = cnt[j][i] = 1;
}
}
}
}
for (int k = 1; k <= n; k++)
{
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= n; j++)
{
if (g[i][j] == g[i][k] + g[k][j] &&
cnt[i][j] == cnt[i][k] * cnt[k][j])
{
flag = false;
cout << k << " ";
}
}
}
}
if (flag)
{
cout << "No important cities." << endl;
}
return 0;
}
样例应输出2,结果输出No important cities.