栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

poj 3621 Sightseeing Cows

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

poj 3621 Sightseeing Cows

#include <iostream>#include <cstring>#include <cstdlib>#include <cstdio>#include <algorithm>#include <cmath>#define N 1100#define M 1000100using namespace std;int a[M],b[M];int head[N],next[M],to[M];int q[M*5],im[N];int vis[N];int n,cnt,m,st;double l,r,mid,c[M],dis[N],len[M],val[N];inline void add(int u,int v,double w){    to[cnt]=v; len[cnt]=w; next[cnt]=head[u]; head[u]=cnt++;}inline void read(){    memset(head,-1,sizeof head); cnt=0;    for(int i=1;i<=n;i++) scanf("%lf",&val[i]);    for(int i=1;i<=m;i++)    {        scanf("%d%d%lf",&a[i],&b[i],&c[i]);        add(a[i],b[i],c[i]);    }}inline bool dfs(int u){    vis[u]=st;    for(int i=head[u];~i;i=next[i])        if(dis[to[i]]>dis[u]+len[i]*mid-val[u])        { dis[to[i]]=dis[u]+len[i]*mid-val[u]; if(vis[to[i]]==st) return true; else if(dfs(to[i])) return true;        }    vis[u]=0;    return false;}//dfs-spfa找负环 inline bool spfa(){    memset(vis,0,sizeof vis);    for(st=1;st<=n;st++)        if(dfs(st)) return true;    return false;}inline void go(){    l=0.0; r=1000.0;    while(r-l>1e-4)    {        mid=(l+r)/2.0;        if(spfa()) l=mid;        else r=mid;    }    printf("%.2lfn",mid);}int main(){    while(scanf("%d%d",&n,&m)!=EOF) read(),go();    return 0;}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/376840.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号