#include <bits/stdc++.h>
#define inf 0x7f7f7f7f
using namespace std;
const int maxn = 100;
struct node {
int v,w;
};
vector<node> G[maxn];
int vis[maxn],dis[maxn];
int n;
int cnt[200] = {};
void insert(int u,int v,int w){
G[u].push_back(node{v,w});
}
void dijkstra(int s){
memset(vis,0,sizeof vis);
memset(dis,inf,sizeof dis);
dis[s] = 0;
for (int i=1;i<=n;i++){
int mi = inf,u;
for (int j=1;j<=n;j++){
if (vis[j] == 0 && dis[j] < mi){
mi = dis[j];
u = j;
}
}
vis[u] = 1;
for (int j=0;j<G[i].size();j++){
int v = G[u][j].v,w = G[u][j].w;
if (dis[v] > dis[u] + w){
dis[v] = dis[u] + w;
}
}
}
}
int main(){
cin >> n;
for (int i=1;i<=n;i++){
char a1,b1;
int c;
cin >> a1 >> b1 >> c;
if (a1 >= 'A' && a1 <= 'Z'){
cnt[int(a1)] = 1;
}
if (b1 >= 'A' && b1 <= 'Z'){
cnt[int(b1)] = 1;
}
int a = int(a1),b = int(b1);
insert(a,b,c);
insert(b,a,c);
}
int s = 'Z';
dijkstra(s);
char place;
int minn = inf;
for (int i='A';i<='Y';i++){
if (cnt[int(i)] == 0)continue;
if (dis[int(i)] < minn){
minn = dis[int(i)];
place = i;
}
}
cout << place << ' ' << minn;
return 0;
}
用的 dijkstra 板子,6RE + 3WA