救助|玄关|求求了
  • 板块灌水区
  • 楼主cmpt_xiaoxiao
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/3/11 22:23
  • 上次更新2024/3/12 13:46:00
查看原帖
救助|玄关|求求了
954694
cmpt_xiaoxiao楼主2024/3/11 22:23

题:天路

WA码:

#include<iostream>
#include<vector>
#include<queue>
#include<cstring>
using namespace std;
int n,m;
const double eps=1e-3;
double dis[10001];
bool inq[10001];
struct node{
	int v,f,t;
};
vector<node>edge[10001];
bool spfa(int s,double ans){
	queue<int>q;
	dis[s]=0;
	q.push(s);
	inq[s]=1;
	int cnt[10001]={1};
	while(!q.empty()){
		int u=q.front();
		q.pop();
		inq[u]=0;
		if(cnt[u]>n) return 1;
		for(auto [v,f,t]:edge[u]){
			double w=t*ans-f;
			if(dis[v]>dis[u]+w){
				dis[v]=dis[u]+w;
				cnt[v]=cnt[u]+1;
				if(!inq[v]){
					q.push(v);
					inq[v]=1;
				}
			}

		}
	}
	return 0;
}
int main(){
	cin>>n>>m;
	double l=0,r=1000.0;
	for(int i=1;i<=m;i++){
		int u,v,v1,p1;
		cin>>u>>v>>v1>>p1;
		edge[u].push_back({v,v1,p1});
	}
	while(l+eps<r){
		double mid=(l+r)/2.0;
		for(int i=0;i<=n;i++){
			dis[i]=1e9;
			inq[i]=0;
		} 
		if(spfa(0,mid)) l=mid;
		else r=mid;
	}
	if(l==0) printf("-1\n");
	else printf("%.1f\n",r);
	return 0;
}

他为什么都是-1啊,QWQ 验证码m2b6祭

2024/3/11 22:23
加载中...