求助!! #7 5ms/808.00KB WA
查看原帖
求助!! #7 5ms/808.00KB WA
637788
kimi0705楼主2022/11/11 11:49
#include <bits/stdc++.h>
#include <climits>
using namespace std;
int juli[256] = {INT_MAX};
int mp[256][256];
int m;
bool vis[256];
int main() {
  cin >> m;
  for (int i = 1; i <= m; i++) {
    char x, y;
    int z;
    cin >> x >> y >> z;
    mp[x][y] = z;
    mp[y][x] = z;
  }
  for (int i = 1; i <= 255; i++)
    juli[i] = mp[i]['Z'] == 0 ? INT_MAX : mp[i]['Z'];
  juli['Z'] = 0;
  vis['Z'] = true;
  while (1) {
    int MIN = 0;
    for (int i = 1; i <= 255; i++)
      if (!vis[i])
        if (juli[MIN] > juli[i])
          MIN = i;
    if (MIN == 0) {
      break;
    }
    vis[MIN] = 1;
    for (int i = 1; i <= 255; i++) {
      if (!vis[i] && mp[MIN][i] && juli[i] > juli[MIN] + mp[MIN][i]) {
        juli[i] = juli[MIN] + mp[MIN][i];
      }
    }
  }
  int ans = INT_MAX;
  int num;
  for (int i = 'A'; i <= 'Y'; i++) {
    if (juli[i] < ans) {
      ans = juli[i];
      num = i;
    }
  }
  cout << (char)num << ' ' << ans << endl;
}
2022/11/11 11:49
加载中...