紧急求助!!!!!
查看原帖
紧急求助!!!!!
565903
ZYH_juruo楼主2022/8/24 18:34

本蒟蒻能力不行,dijkstra堆优化wa了五个点,跪求da lao帮调代码

#include<bits/stdc++.h>
#define inf 0x3f3f3f3f
using namespace std;
const int maxn=10010;
priority_queue<pair<int,int> ,vector<pair<int,int> >,greater<pair<int,int> > > q;
int n,m,w;
char u,v;
struct node{
	int to;
	int w;
	int nxt;
}edge[maxn*2];
int tot,head[maxn*2];
int dis[maxn];
int vis[maxn];
void add(int u,int v,int w)
{
	edge[++tot].to=v;
	edge[tot].w=w;
	edge[tot].nxt=head[u];
	head[u]=tot;
}
int main()
{
	memset(dis,inf,sizeof(dis));
	memset(vis,0,sizeof(vis));
	scanf("%d",&n);
	for(int i=1;i<=n;++i)
	{
		cin>>u>>v;
		int U,V;
		if(u>='a'){
			U=int(u-96);
			V=int(v-38);
		}
		else{
			V=int(v-96);
			U=int(u-38);
		}	
		scanf("%d",&w);
		add(U,V,w);
		add(V,U,w);
	}
	dis[52]=0;
	q.push(make_pair(0,52));
	while(!q.empty())
	{
		int x=q.top().second;
		q.pop();
		if(vis[x]==1) continue;
		vis[x]=1;
		for(int i=head[x];i!=0;i=edge[i].nxt)
		{
			if(dis[edge[i].to]>dis[x]+edge[i].w){
				dis[edge[i].to]=dis[x]+edge[i].w;
				q.push(make_pair(dis[edge[i].to],edge[i].to));
			}	
		}
	}
	int mincow=INT_MAX,k;
	for(int i=27;i<=51;i++)
	{
		if(mincow>dis[i])
		{
			mincow=dis[i];
			k=i+38;
		}
	}
	cout<<char(k)<<" "<<mincow<<endl;
	return 0;
}
2022/8/24 18:34
加载中...