dijkstra+堆优化 50pts,求调
查看原帖
dijkstra+堆优化 50pts,求调
1073342
Genshin_ZFYX楼主2024/5/26 17:59

#3 #6 #7 #8 #10 WA

#include<bits/stdc++.h>
using namespace std;
struct node{
	int d,v;
	friend bool operator>(const node &a,const node &b)
	{
		return a.d>b.d;
	}
};
priority_queue<node,vector<node>,greater<node> >q;
vector<int>a[2505];
int n,m,s,t,w[2505][2505],d[2505],vis[2505];
void dijkstra()
{
	q.push({s,0});
	d[s]=0;
	while(!q.empty())
	{
		node t=q.top();q.pop();
		if(vis[t.d])continue;
		for(int i=0;i<a[t.d].size();i++)
		{
			int v=a[t.d][i];
			d[v]=min(d[v],d[t.d]+w[v][t.d]);
			q.push((node){v,d[v]});
		}
		vis[t.d]=1;
	}
}
signed main()
{
    cin.tie(0)->sync_with_stdio(0);
    cin>>n>>m>>s>>t;
    for(int i=1;i<=n;i++)
    d[i]=0x3f3f3f3f;
    for(int i=1;i<=m;i++)
    {
    	int u,v,c;
		cin>>u>>v>>c;
		a[u].push_back(v);
		a[v].push_back(u);
		w[u][v]=w[v][u]=c;
	}
	dijkstra();
	cout<<d[t];
	return 0;
}

2024/5/26 17:59
加载中...