社区讨论

求调闭关,用的低级哥斯拉

P1576最小花费参与者 13已保存回复 19

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
19 条
当前快照
1 份
快照标识符
@mlgxv0nl
此快照首次捕获于
2026/02/11 02:32
上周
此快照最后确认于
2026/02/11 02:39
上周
查看原帖
CPP
#include<bits/stdc++.h>
#define ll long long
#define fii pair<int,int>
#define inf 0x3f3f3f3f
#define smalldui priority_queue<int,vector<int>,greater<int>>
using namespace std;
ll n, m, x, y, z, a, b;
ll dis[3001], vis[3001];
vector<fii> g[3001];
void dijigesila(){
	for ( int i = 1 ; i <= n ; i++ ){
		dis[i] = inf;
	}
	dis[a] = 0;
	for ( int i = 1 ; i <= n ; i++ ){
		ll pos = -1, minn = inf;
		for ( int j = 1 ; j <= n ; j++ ){
			if (dis[j] < minn && vis[j] == 0){
				pos = j;
				minn = dis[j];
			}
		} 
		if ( pos == -1 || minn == inf ){
			break;
		}
		vis[pos] = 1;
		for ( int j = 0 ; j < g[pos].size() ; j++ ){
			ll id = g[pos][j].first;
			ll z = g[pos][j].second;
			if (dis[id] > dis[pos] + z ){
				dis[id] = dis[pos] + z;
			}
		}
	}
}
int main(){
	cin >> n >> m;
	for ( int i = 1 ; i <= m ; i++ ){
		cin >> x >> y >> z;
		g[x].push_back({y,z});
		g[y].push_back({x,z});
	}
	cin >> a >> b;
	dijigesila();
	cout << fixed << setprecision(8) << 100 / (1 - dis[b] / 100);
	return 0;
}

回复

19 条回复,欢迎继续交流。

正在加载回复...