牛奶

#include <bits/stdc++.h>
#define M 100005
using namespace std;
int n,k,m,dis[M],i,ww,vis[M],dis2[M],num=0x3f,vis2[M],arr[100][100],xx,yy,vis3[M],nn;
char x,y,ll;
struct cmp{
bool operator ()(const int &a,int &b)const
{
    return dis[a]>dis[b];
 }
};
priority_queue <int,vector<int>,cmp> mqy;
void djj (int a)
{
    memset(dis,0x3f,sizeof(dis));
    memset(vis,0,sizeof(vis));
    vis[a]=1; dis[a]=0;
      for(i=0;i<nn;i++)
    {
        for(int j=0;j<=57;j++)
        {
            if(arr[a][j]!=0&&dis[j]>arr[a][j]+dis[a])
            {
                dis[j]=dis[a]+arr[a][j];mqy.push(j);
            }
        }
        while(!mqy.empty()&&vis[mqy.top()]==1) mqy.pop();
        a=mqy.top();vis[a]=1;mqy.pop();
    }
}

int main(){
    scanf("%d",&n);
    for(i=1;i<=n;i++)
    {
        scanf("%c%c%d",&x,&y,&ww);
        xx='z'-x;yy='z'-y;
        if(xx>=32&&xx<=57)
        vis2[xx]=1;
        if(yy>=32&&yy<=57)
        vis2[yy]=1;
        if(vis3[xx]==0)
         nn++;
        if(arr[xx][yy]>ww||arr[xx][yy]==0)
         arr[xx][yy]=ww;
    }
    djj(32);
    for(i=33;i<=57;i++)
    {
        if(num>dis[i])
        {
        num=dis[i];ll='z'-32;
        }
    }
    cout<<ll<<" "<<num;
}

 

转载于:https://www.cnblogs.com/Lamboofhome/p/11545643.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值