为啥会RE
查看原帖
为啥会RE
761210
dpdfs12345楼主2023/8/7 21:58
#include <iostream>
#include <cstring>
#include <vector>
#include <queue>
#include <cmath>
#define x first
#define y second
using namespace std;
typedef pair<int,pair<int,int> > PIII;
typedef pair<int,int> PII;
const int N = 20010,M = 40010,INF = 0x3f3f3f3f;
int n,m,s,t;
vector<PII> g[N];
int dist[205][N];
bool st[205][N];
int dijkstra(){
	memset(dist,0x3f,sizeof(dist));
	priority_queue<PIII,vector<PIII>,greater<PIII> > q;
	q.push({0,{t,0}});
	dist[0][t] = 0;
	while(!q.empty()){
		auto node = q.top();
		q.pop();
		auto ver = node.y.x;
		int k = node.y.y;
		if(st[k][ver]) continue;
		st[k][ver] = true;
		if(k > 100) continue;
		for(int i=0;i<g[ver].size();i++){
			int j = g[ver][i].x;
			if(dist[k + 1][j] > dist[k][ver] + g[ver][i].y / (k + 1)){
				dist[k + 1][j] = dist[k][ver] + g[ver][i].y / (k + 1);
				q.push({dist[k + 1][j],{j,k+1}});
			}
		}
	}
}
int main(){
	scanf("%d %d %d %d",&n,&m,&s,&t);
	while(m -- ){
		int a,b,c;
		scanf("%d %d %d",&a,&b,&c);
		g[a].push_back({b,c});
		g[b].push_back({a,c});
	}
	dijkstra();
	int ans = INF;
	for(int i=0;i<=101;i++) ans = min(ans,dist[i][s]);
	printf("%d",ans);
	return 0;
}****
2023/8/7 21:58
加载中...