蒟蒻P1841 Floyd没过样例求助各位奆佬QWQ
查看原帖
蒟蒻P1841 Floyd没过样例求助各位奆佬QWQ
751264
fansj楼主2024/8/26 21:10

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.

2024/8/26 21:10
加载中...