80pts求条
查看原帖
80pts求条
1350062
hujr_114514楼主2024/11/8 17:20
#include<iostream>
#include<queue>
#include<vector>
#include<cstring>
using namespace std;
struct EDGE{
	int v;
	int w;
};
vector<EDGE>g[2600];
queue<int>q;
int s,t,n,m,dis[2600];
bool vis[2600];
int main(){
	memset(dis,0x3f,sizeof(dis));
	cin>>n>>m>>s>>t;
	for(int i=1;i<=m;i++){
		int u,v,w;
		cin>>u>>v>>w;
		g[u].push_back({v,w});
		g[v].push_back({u,w});
	}
	q.push(s);
	dis[s]=0;
    while (!q.empty()) {
	    int u = q.front();
	    q.pop(), vis[u] = 1;
	    for (auto p : g[u]) {
	        int v = p.v, w = p.w;
	        if (dis[v] > dis[u] + w) {
	            dis[v] = dis[u] + w;
	            if (!vis[v]) {
			   		q.push(v); vis[v] = 1;
	      	    }
		    }
	    }
    }
	cout<<dis[t];
}
2024/11/8 17:20
加载中...