德克萨斯长角牛 --最短路径
题目
没事回顾一下最短路径算法。练练手。。
spfa 解法
#include <iostream> #include <cstdio> #include <queue> #include <cstring> using namespace std; struct node {int v,w,next; }; const int MAX=9999999999; node edge[32500]; int head[2510]; int cnt;//记录下biao int ts,te,t,c;void add(int u,int v,int w) {edge[cnt].w=w;edge[cnt].v=v;edge[cnt].next=head[u];head[u]=cnt++; }void SPFA() {int i,u,v;//u从Q中取出的点,v找到的点int dis[2510];int flag[2510];bool vis[2510];deque<int> que;fill(dis,dis+t+1,MAX);memset(flag,0,sizeof(flag));memset(vis,false,sizeof(vis));dis[ts]=0;que.push_back(ts);while(!que.empty()){u=que.front();que.pop_front();vis[u]=false;for(i=head[u];i!=-1;i=edge[i].next){v=edge[i].v;if(dis[v]>dis[u]+edge[i].w){dis[v]=dis[u]+edge[i].w;if(!vis[v]){vis[v]=true;flag[v]++;if(flag[v]>=t)return ;if(!que.empty()&&dis[v]<dis[que.front()])que.push_front(v);elseque.push_back(v);}}}}printf("%d\n",dis[te]); } int main() {scanf("%d%d%d%d",&t,&c,&ts,&te);memset(head,-1,sizeof(head));cnt=0;int u,v,w;while(c--){scanf("%d%d%d",&u,&v,&w);add(u,v,w);add(v,u,w);}SPFA();return 0; }
dijkstra解法,直接套用的模板
#include <cstdio> #include <cstring> #include <algorithm> #include <iostream> #include <queue> #define MAX 9999999using namespace std; //pair 的first 保存的为最短距离, second保存的为顶点编号 typedef pair<int, int >P;//对组 不知道请自行百度 struct node {int v, w;//v 为到达的点, w为权重int next;//记录下一个结构体的位置 ,就向链表的next功能是一样的 }; node edge[22003];//存所有的边,因为是无向图,所以*2 int cnt;//结构体的下标 int n, s, t;//n 点数,s 起点,t止点 int head[3203];//和链表的头指针数组是一样的。只不过此处head[u]记录的为最后加入 edge 的且与u相连的边在 edge 中的位置,即下标void add(int u, int v, int w)//加边操作 {edge[cnt].v = v;edge[cnt].w = w;edge[cnt].next = head[u];//获得下一个结构体的位置head[u] = cnt++;//记录头指针的下标 }void dijkstra() {int dis[3203];//最短路径数组int i, v;//v保存从队列中取出的数的第二个数 也就是顶点的编号priority_queue<P,vector<P>,greater<P> >que;//优先队列 从小到大node e;//保存边的信息,为了书写方便P p;//保存从队列取出的数值 fill(dis,dis+n+1,MAX);//初始化,都为无穷大dis[s] = 0;//s—>s 距离为0que.push(P(0,s));//放入距离 为0 点为swhile(!que.empty()){p = que.top();//取出队列中最短距离最小的对组que.pop();//删除v = p.second;//获得最短距离最小的顶点编号if(dis[v] < p.first)//若取出的不是最短距离continue;//则进行下一次循环for(i=head[v];i!=-1;i=edge[i].next)//对与此点相连的所有的点进行遍历 {e = edge[i];//为了书写的方便。if(dis[e.v]>dis[v]+e.w){//进行松弛dis[e.v]=dis[v]+e.w;//松弛成功que.push(P(dis[e.v],e.v));//讲找到的松弛成功的距离 和顶点放入队列 }}}printf("%d\n",dis[t]==MAX?-1:dis[t]);//输出结果 }int main() {int m, u, v, w;scanf("%d %d",&n,&m);//获取点数 边数scanf("%d %d",&s,&t);cnt = 0;//结构体下标从0开始memset(head,-1,sizeof(head));//初始化head[N]数组while(m--){scanf("%d %d %d",&u,&v,&w);//获取u,v,w(u,v)add(u,v,w);//加边add(v,u,w);//加边 }//scanf("%d %d",&s,&t);//获取起止点 dijkstra();return 0; }
View Code
转载于:https://www.cnblogs.com/WDKER/p/5506083.html
德克萨斯长角牛 --最短路径相关推荐
- 计蒜客: 德克萨斯长角牛 (最短路)
https://nanti.jisuanke.com/t/230 德克萨斯纯朴的民眾们这个夏天正在遭受巨大的热浪!!!他们的德克萨斯长角牛吃起来不错,可是他们并不是很擅长生产富含奶油的乳制品.Farm ...
- 计蒜客 - 德克萨斯长角牛(最短路)
题目链接:https://nanti.jisuanke.com/t/230 1000ms 65536K 题目描述 德克萨斯纯朴的民眾们这个夏天正在遭受巨大的热浪!!!他们的德克萨斯长角牛吃起来不错,可 ...
- AcWing 1129 热浪
题目描述: 德克萨斯纯朴的民众们这个夏天正在遭受巨大的热浪!!! 他们的德克萨斯长角牛吃起来不错,可是它们并不是很擅长生产富含奶油的乳制品. 农夫John此时身先士卒地承担起向德克萨斯运送大量的营养冰 ...
- AcWing算法提高课-3.1.1热浪
宣传一下算法提高课整理 <- CSDN个人主页:更好的阅读体验 <- 题目传送门点这里 题目描述 德克萨斯纯朴的民众们这个夏天正在遭受巨大的热浪!!! 他们的德克萨斯长角牛吃起来不错,可是 ...
- AcWing算法提高课笔记
目录 Level2 1.动态规划--从集合角度考虑DP问题 1.1 数字三角形模型 1.1.1摘花生 1.1.2最低通行费 1.1.3方格取数 1.1.4传纸条 1.2 最长上升子序列模型 1.2.1 ...
- AC日记——热浪 codevs 1557 (最短路模板题)
1557 热浪 时间限制: 1 s 空间限制: 256000 KB 题目等级 : 钻石 Diamond 题解 查看运行结果 题目描述 Description 德克萨斯纯朴的民眾们这个夏天正在遭 ...
- 最短路算法整理 1557 热浪
1557 热浪 时间限制: 1 s 空间限制: 256000 KB 题目等级 : 钻石 Diamond 题目描述 Description 德克萨斯纯朴的民眾们这个夏天正在遭受巨大的热浪!!!他 ...
- codevs 1557 热浪
传送门 题目描述 Description 德克萨斯纯朴的民眾们这个夏天正在遭受巨大的热浪!!!他们的德克萨斯长角牛吃起来不错,可是他们并不是很擅长生產富含奶油的乳製品.Farmer John此时以先天 ...
- 热浪(信息学奥赛一本通-T1379)
[题目描述] 德克萨斯纯朴的民眾们这个夏天正在遭受巨大的热浪!!!他们的德克萨斯长角牛吃起来不错,可是他们并不是很擅长生產富含奶油的乳製品.Farmer John此时以先天下之忧而忧,后天下之乐而乐的 ...
最新文章
- 关于在web项目中实现本地打印
- ReDim Preserve 的用途
- Android清单文件详解(三)----应用程序的根节点application
- echarts在.Net中使用实例(二) 使用ajax动态加载数据
- 你可能不知道的跨域解决方案
- vscode设置折行字数
- multipartfile 获取音频时长_抖音音频下载捷径:一键提取音频,安卓+ios全通用,完全免费...
- 安卓系统双屏异显_Android实现双屏异显
- 怎么证明自己会python_1024程序员节,请用一句话证明你是一个程序员!
- [渝粤教育] 西南科技大学 政治经济学 在线考试复习资料
- 如何在revit中管理CAD的图层?
- ResNet网络结构详解及代码复现
- 08CMS小说搜索型注入 - 漏洞发布 京华志
- LA 5846 霓虹灯广告牌(单色三角形问题)
- 问request.getRequestDispatcher(“url“).forward(request.response)是什么意思
- poj1386 Paly onWords
- 优享短视频训练营:这些好用的视频剪辑APP,你知道吗?
- 用ansys出黑白等值线图
- Zhong__xlrd基本使用
- 发送网页地址确定对方ip
热门文章
- 编译链接实战(12)crt1.o, crti.o, crtbegin.o, crtend.o, crtn.o是什么东西
- 登录注册小程序(JAVA基础案例教程第二章-课后作业)
- Unix/BSD/Linux的口令机制初探(转)
- 2022华中杯数学建模思路
- 详解抖音壁纸号的具体玩法,变现方法容易吗?
- 【山东事业单位】公共基础知识——重要国际经济组织
- 可视化编程语言_可视化编程语言影响图
- 现在很多人都想做抖音短视频,那我们应该怎样去做呢?一起来看一吧
- 硬件设计过程FPGA时钟引脚注意事项
- 自动化运维为什么是必须的?