题目

没事回顾一下最短路径算法。练练手。。

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

德克萨斯长角牛 --最短路径相关推荐

  1. 计蒜客: 德克萨斯长角牛 (最短路)

    https://nanti.jisuanke.com/t/230 德克萨斯纯朴的民眾们这个夏天正在遭受巨大的热浪!!!他们的德克萨斯长角牛吃起来不错,可是他们并不是很擅长生产富含奶油的乳制品.Farm ...

  2. 计蒜客 - 德克萨斯长角牛(最短路)

    题目链接:https://nanti.jisuanke.com/t/230 1000ms 65536K 题目描述 德克萨斯纯朴的民眾们这个夏天正在遭受巨大的热浪!!!他们的德克萨斯长角牛吃起来不错,可 ...

  3. AcWing 1129 热浪

    题目描述: 德克萨斯纯朴的民众们这个夏天正在遭受巨大的热浪!!! 他们的德克萨斯长角牛吃起来不错,可是它们并不是很擅长生产富含奶油的乳制品. 农夫John此时身先士卒地承担起向德克萨斯运送大量的营养冰 ...

  4. AcWing算法提高课-3.1.1热浪

    宣传一下算法提高课整理 <- CSDN个人主页:更好的阅读体验 <- 题目传送门点这里 题目描述 德克萨斯纯朴的民众们这个夏天正在遭受巨大的热浪!!! 他们的德克萨斯长角牛吃起来不错,可是 ...

  5. AcWing算法提高课笔记

    目录 Level2 1.动态规划--从集合角度考虑DP问题 1.1 数字三角形模型 1.1.1摘花生 1.1.2最低通行费 1.1.3方格取数 1.1.4传纸条 1.2 最长上升子序列模型 1.2.1 ...

  6. AC日记——热浪 codevs 1557 (最短路模板题)

    1557 热浪  时间限制: 1 s  空间限制: 256000 KB  题目等级 : 钻石 Diamond 题解  查看运行结果 题目描述 Description 德克萨斯纯朴的民眾们这个夏天正在遭 ...

  7. 最短路算法整理 1557 热浪

    1557 热浪  时间限制: 1 s  空间限制: 256000 KB  题目等级 : 钻石 Diamond  题目描述 Description 德克萨斯纯朴的民眾们这个夏天正在遭受巨大的热浪!!!他 ...

  8. codevs 1557 热浪

    传送门 题目描述 Description 德克萨斯纯朴的民眾们这个夏天正在遭受巨大的热浪!!!他们的德克萨斯长角牛吃起来不错,可是他们并不是很擅长生產富含奶油的乳製品.Farmer John此时以先天 ...

  9. 热浪(信息学奥赛一本通-T1379)

    [题目描述] 德克萨斯纯朴的民眾们这个夏天正在遭受巨大的热浪!!!他们的德克萨斯长角牛吃起来不错,可是他们并不是很擅长生產富含奶油的乳製品.Farmer John此时以先天下之忧而忧,后天下之乐而乐的 ...

最新文章

  1. 关于在web项目中实现本地打印
  2. ReDim Preserve 的用途
  3. Android清单文件详解(三)----应用程序的根节点application
  4. echarts在.Net中使用实例(二) 使用ajax动态加载数据
  5. 你可能不知道的跨域解决方案
  6. vscode设置折行字数
  7. multipartfile 获取音频时长_抖音音频下载捷径:一键提取音频,安卓+ios全通用,完全免费...
  8. 安卓系统双屏异显_Android实现双屏异显
  9. 怎么证明自己会python_1024程序员节,请用一句话证明你是一个程序员!
  10. [渝粤教育] 西南科技大学 政治经济学 在线考试复习资料
  11. 如何在revit中管理CAD的图层?
  12. ResNet网络结构详解及代码复现
  13. 08CMS小说搜索型注入 - 漏洞发布 京华志
  14. LA 5846 霓虹灯广告牌(单色三角形问题)
  15. 问request.getRequestDispatcher(“url“).forward(request.response)是什么意思
  16. poj1386 Paly onWords
  17. 优享短视频训练营:这些好用的视频剪辑APP,你知道吗?
  18. 用ansys出黑白等值线图
  19. Zhong__xlrd基本使用
  20. 发送网页地址确定对方ip

热门文章

  1. 编译链接实战(12)crt1.o, crti.o, crtbegin.o, crtend.o, crtn.o是什么东西
  2. 登录注册小程序(JAVA基础案例教程第二章-课后作业)
  3. Unix/BSD/Linux的口令机制初探(转)
  4. 2022华中杯数学建模思路
  5. 详解抖音壁纸号的具体玩法,变现方法容易吗?
  6. 【山东事业单位】公共基础知识——重要国际经济组织
  7. 可视化编程语言_可视化编程语言影响图
  8. 现在很多人都想做抖音短视频,那我们应该怎样去做呢?一起来看一吧
  9. 硬件设计过程FPGA时钟引脚注意事项
  10. 自动化运维为什么是必须的?