#include<bits/stdc++.h>
using namespace std;
int m;
int vis[30],d[30];
int c[30];
struct node
{
int x;
int y;
bool operator<(const node&a)const
{
return y>a.y;
}
};
vector<node>a[30];
priority_queue<node>que;
int main()
{
scanf("%d",&m);
for(int i = 1;i<=m;i++)
{
char x,y;
int z;
cin >> x >> y;
scanf("%d",&z);
if(x>='A'&&x<='Z')
{
c[x+32-'a'+1] = 1;
}
if(y>='A'&&y<='Z')
{
c[y+32-'a'+1] = 1;
}
a[x+(x>='A'&&x<='Z')*32-'a'+1].push_back({y+(y>='A'&&y<='Z')*32-'a'+1,z});
a[y+(y>='A'&&y<='Z')*32-'a'+1].push_back({x+(x>='A'&&x<='Z')*32-'a'+1,z});
}
memset(d,0x3f,sizeof(d));
d[26] = 0;
que.push({26,0});
while(que.size())
{
node e = que.top();
que.pop();
if(vis[e.x] == 1)
{
continue;
}
vis[e.x] = 1;
for(int i = 0;i<a[e.x].size();i++)
{
node s = a[e.x][i];
if(vis[s.x] == 0&&s.y+d[e.x]<d[s.x])
{
d[s.x] = s.y+d[e.x];
que.push({s.x,d[s.x]});
}
}
}
char qwq;
int ans = INT_MAX;
for(int i = 1;i<=25;i++)
{
if(c[i] == 1)
{
if(ans>d[i])
{
ans = d[i];
qwq = 'a'+i-1;
}
}
}
cout << char(qwq-32) << " ";
printf("%d",ans);
return 0;
}
为什么22分,求助!!