$LateX$ 打错了
by jimmyfj @ 2022-10-07 14:13:39
@[jimmyfj](/user/462047)
只更改了 dijkstra 函数。
```cpp
#include <bits/stdc++.h>
using namespace std;
const int M = 200005, N = 100005;
typedef pair<int, int> PII;
int n;
char s, e, c[M << 1];
int l;
int cnt, tot;
int ver[M << 1], ed[M << 1], ne[M << 1], head[N];
int dis[N];
bool vis[M << 1];
char ans;
int sum = INT_MAX;
priority_queue<int, vector<PII>, greater<PII> > q;
void add (char x, char y, int z) {
tot ++;
ver[tot] = y - '0';
ed[tot] = z;
ne[tot] = head[x - '0'];
head[x - '0'] = tot;
}
void dijkstra (int s) {
dis[s] = 0;
q.push(make_pair(0, s));
while (!q.empty()) {
int x = q.top().second;
q.pop();
if(vis[x]) continue;
vis[x] = true;
for (int i = head[x]; i; i = ne[i]) {
if(dis[ver[i]] > dis[x] + ed[i]) {
dis[ver[i]] = dis[x] + ed[i];
q.push(make_pair(dis[ver[i]], ver[i]));
}
}
}
}
signed main () {
cin >> n;
memset(head, 0, sizeof(head));
memset(dis, 0x3f, sizeof(dis));
for (int i = 1; i <= n; i++) {
cin >> s >> e >> l;
if(s >= 'A' && s < 'Z') cnt ++, c[cnt] = s;
if(e >= 'A' && e < 'Z') cnt ++, c[cnt] = e;
add (s, e, l);
add (e, s, l);
}
int k = 'Z' - '0';
dijkstra(k);
for (int i = 1; i <= cnt; i ++) {
if(dis[c[i] - '0'] < sum) {
sum = dis[c[i] - '0'];
ans = c[i];
}
}
cout << ans << " " << sum;
return 0;
}
```
by 柳下惠 @ 2022-10-07 14:28:33
@[柳下惠](/user/539747) 谢谢
by jimmyfj @ 2022-10-07 14:34:08