poj 1135

Dijkstra最短路

模拟每个key的坠落时间,发现就是Dijkstra。

求出每个key的时间求其最大值,再求每条边整个坠落的时间,求其最大值,得二者最大值即结果。

其中每条边的坠落事件为tv+(cost-(tv-tu))/2,其中u,v为边的两个key节点,tv>tu,cost为边的权值

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cstring>
 4 #include <queue>
 5 using namespace std;
 6 const int maxn=500+10;
 7 const int inf=0x3f3f3f3f;
 8 const int maxm=maxn*maxn;
 9 struct Edge
10 {
11     int to,next,cost,from,dis;
12 };
13 struct HeapNode
14 {
15     int d,u;
16     bool operator < (const HeapNode& rhs) const { return d>rhs.d; }
17 };
18 Edge edge[maxm];
19 int head[maxn],dis[maxn],vis[maxn];
20 int n,m,tot,loc;
21 double maxv;
22 void dijkstra()
23 {
24     priority_queue<HeapNode> q;
25     memset(dis,inf,sizeof(dis));
26     memset(vis,0,sizeof(vis));
27     dis[1]=0;
28     maxv=0;
29     loc=1;
30     q.push((HeapNode){0,1});
31     while(!q.empty())
32     {
33         HeapNode x=q.top(); q.pop();
34         int u=x.u;
35         if(vis[u]) continue;
36         if(dis[u]>maxv)
37         {
38             maxv=dis[u];
39             loc=u;
40         }
41         vis[u]=1;
42         for(int i=head[u];i!=-1;i=edge[i].next)
43         {
44             if(dis[edge[i].to]>(dis[u]+edge[i].cost))
45             {
46                 dis[edge[i].to]=dis[u]+edge[i].cost;
47                 q.push((HeapNode){dis[edge[i].to],edge[i].to});
48             }
49         }
50     }
51 }
52 int main()
53 {
54     int cas=0;
55     while(scanf("%d%d",&n,&m))
56     {
57         if(!n&&!m) break;
58         tot=0;
59         memset(head,-1,sizeof(head));
60         int i;
61         int u,v,cost;
62         for(i=0;i<m;i++)
63         {
64             scanf("%d%d%d",&u,&v,&cost);
65             edge[tot].cost=cost; edge[tot].to=v; edge[tot].from=u;
66             edge[tot].next=head[u]; head[u]=tot++;
67             edge[tot].cost=cost; edge[tot].to=u; edge[tot].from=v;
68             edge[tot].next=head[v]; head[v]=tot++;
69         }
70         dijkstra();
71         int loc1,loc2,flag=0;
72         double tem;
73         for(i=0;i<tot;i+=2)
74         {
75             tem=(edge[i].cost+dis[edge[i].from]+dis[edge[i].to])/2.0;
76             if(tem>maxv)
77             {
78                 flag=1;
79                 maxv=tem;
80                 loc1=min(edge[i].from,edge[i].to);
81                 loc2=max(edge[i].from,edge[i].to);
82             }
83         }
84         printf("System #%d\n",++cas);
85         if(flag) printf("The last domino falls after %.1f seconds, between key dominoes %d and %d.\n",maxv,loc1,loc2);
86         else printf("The last domino falls after %.1f seconds, at key domino %d.\n",maxv,loc);
87         printf("\n");
88     }
89     return 0;
90 }

 

转载于:https://www.cnblogs.com/lj030/p/3200906.html

内容概要:2025年大宗商品市场展望报告由世界银行发布,分析了能源、农业、金属和矿物、贵金属以及化肥等多个主要商品类别的市场发展与前景。报告指出,由于全球经济增长放缓和贸易紧张加剧,2025年大宗商品价格预计总体下降12%,2026年进一步下降5%,达到六年来的最低点。油价预计2025年平均为每桶64美元,2026年降至60美元,主要受全球石油消费放缓和供应增加的影响。农业商品价格预计2025年基本稳定,2026年下降3%,其中粮食和原材料价格分别下降7%和2%,但饮料价格上涨20%。金属价格预计2025年下降10%,2026年再降3%,特别是铜和铝价格将显著下跌。贵金属如黄金和白银因避险需求强劲,预计价格将继续上涨。报告还特别关注了疫情后大宗商品周期的变化,指出周期变得更短、更剧烈,主要受到宏观经济冲击、极端天气事件和地缘政治冲突的影响。 适用人群:对全球经济趋势、大宗商品市场动态及其对不同经济体影响感兴趣的政策制定者、投资者、分析师及研究机构。 使用场景及目标:①帮助政策制定者评估全球经济增长放缓对大宗商品市场的影响,从而调整经济政策;②为投资者提供有关未来大宗商品价格走势的风险提示,以便进行投资决策;③协助分析师和研究机构深入理解疫情后大宗商品市场的周期特征,识别潜在的投资机会和风险。 其他说明:报告强调,全球经济增长放缓、贸易紧张加剧以及地缘政治不确定性是影响大宗商品价格的主要因素。此外,极端天气事件和能源转型也对农业和能源商品市场产生了深远影响。报告呼吁各方关注这些结构性变化,并采取相应的风险管理措施。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值