HUD-2112 HDU Today(最短路map标记)

博客围绕HUD-2112 HDU Today题目展开,给出解题思路,包括使用最短路spfa模板、用map标记建图,还需考虑距离为0或 -1的情况,最后总结提醒下次使用map要记得清空,并给出AC代码的转载链接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目链接:HUD-2112 HDU Today

 


 

 

思路:

1.最短路spfa模板.

2.map标记建图.

3.考虑距离为0或者-1的情况.

总结:下次map记得清空orz。

AC代码:

 1 #include<cstdio>
 2 #include<map>
 3 #include<iostream>
 4 #include<queue>
 5 using namespace std;
 6 const int INF = 0x3f3f3f3f;
 7 const int maxn = 155;
 8 int Map[maxn][maxn];
 9 int n;
10 int d[maxn];
11 int vis[maxn];
12 void spfa(int s,int n)
13 {
14     queue<int> q;
15     for(int i = 1;i <= n;i++)
16     {
17         d[i] = INF;
18         vis[i] = 0;
19     }
20     d[s] = 0;
21     vis[s] = 1;
22     q.push(s);
23     while(!q.empty())
24     {
25         int k = q.front();q.pop();
26         vis[k] = 0;
27         for(int j = 1;j <= n;j++)
28         {
29             if(d[k] + Map[k][j] < d[j])
30             {
31                 d[j] = d[k] + Map[k][j];
32                 if(!vis[j])
33                     q.push(j),vis[j] = 1;
34             }
35         }
36     }
37 }
38 void init()
39 {
40     for(int i = 0;i <= 150;i++)
41     {
42         for(int j = 0;j <= i;j++)
43         {
44             if(j != i)
45             Map[i][j] = Map[j][i] = INF;
46             else Map[i][j] = 0;
47         }
48     }
49 }
50 int main()
51 {
52     char a[50],b[50];
53     map<string,int> mp;
54     char st[50],ed[50];
55     int w;
56     while(~scanf("%d",&n) && n!= -1)
57     {
58         init();//初始化
59         mp.clear();
60         int count = 0;//用于map一对一转化;
61         scanf("%s%s",&a,&b);
62         mp[a] = ++count;
63         if(!mp[b]) mp[b] = ++count;//如果终点未出现过,则加入图中;
64         for(int i = 0;i < n;i++)
65         {
66             scanf("%s %s %d",&st,&ed,&w);
67             if(!mp[st]) mp[st] = ++count;//检查两点是否出现过
68             if(!mp[ed]) mp[ed] = ++count;
69             int u = mp[st],v = mp[ed];
70             Map[u][v] = Map[v][u] = w;//建图;
71         }
72         spfa(1,count);
73         if(d[ mp[b] ] == INF) printf("-1\n");
74         else printf("%d\n",d[ mp[b] ]);
75     }
76     return 0;
77 }

 

 

转载于:https://www.cnblogs.com/Carered/p/10918043.html

内容概要:本文档提供了关于“微型车间生产线的设计与生产数据采集试验研究”的毕业设计复现代码,涵盖从论文结构生成、机械结构设计、PLC控制系统设计、生产数据采集与分析系统、有限元分析、进度管理、文献管理和论文排版系统的完整实现。通过Python代码和API调用,详细展示了各个模块的功能实现和相互协作。例如,利用SolidWorks API设计机械结构,通过PLC控制系统模拟生产流程,使用数据分析工具进行生产数据的采集和异常检测,以及利用进度管理系统规划项目时间表。 适合人群:具有机械工程、自动化控制或计算机编程基础的学生或研究人员,尤其是从事智能制造领域相关工作的人员。 使用场景及目标:①帮助学生或研究人员快速搭建和理解微型车间生产线的设计与实现;②提供完整的代码框架,便于修改和扩展以适应不同的应用场景;③作为教学或科研项目的参考资料,用于学习和研究智能制造技术。 阅读建议:此资源不仅包含详细的代码实现,还涉及多个学科领域的知识,如机械设计、电气控制、数据分析等。因此,在学习过程中,建议读者结合实际操作,逐步理解每个模块的功能和原理,并尝试调整参数以观察不同设置下的系统表现。同时,可以参考提供的文献资料,深入研究相关理论和技术背景。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值