代码:
#include <bits/stdc++.h>
using namespace std;
#define MAXN 10000
long long p, road, id, ans = LONG_LONG_MAX;
char start, e;
bool vis[52];
struct Edge{
int start, e, road;
}edges[MAXN];
void dfs(int x, int road, int start){
if (vis[x]) return;
if (road >= ans) return;
vis[x] = true;
if (x == 25){
id = start;
ans = road;
return;
}
for (int i=1; i<=p; i++){
if (edges[i].start == x) dfs(edges[i].e, road+edges[i].road, start);
else if (edges[i].e == x) dfs(edges[i].start, road+edges[i].road, start);
}
}
int CTI(char ch){
if (ch >= 'a') return ch-'a'+26;
return ch-'A';
}
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin >> p;
for (int i=1; i<=p; i++){
cin >> start >> e >> road;
edges[i].start = CTI(start);
edges[i].e = CTI(e);
edges[i].road = road;
}
for (int i=0; i<25; i++){
memset(vis, false, sizeof(vis));
dfs(i, 0, i);
}
cout << char(id+'A') << ' ' << ans;
return 0;
}