HDU 1874 畅通工程续
来源:互联网 发布:js 时间间隔 编辑:程序博客网 时间:2024/06/01 19:04
题目大意:对于中文题 没有什么可以说的 就是给个n个点 m个道路 求从某点到某点的最短路径
解题思路:标准的最短路径的模板 因为数据量较小 所以每种算法都可以过。下面我就贴上我过了得代码
Floyd算法
Memoey 1772 Time 62#include <iostream>#include <cstdio>#include <cstring>#include <cstdlib>#include <algorithm>#include <map>#include <cmath>#include <queue>#include <string>#include <vector>#include <set>using namespace std;#define ll long long#define sc(x) scanf("%d",&x)#define dsc(x,y) scanf("%d%d",&x,&y)#define sssc(x) scanf("%s",s)#define sdsc(x,y) scanf("%s %s",x,y)#define ssc(x,y,z) scanf("%d%d%d",&x,&y,&z)#define pr(x) printf("%d\n",x)#define FOR(i,n,o) for(int i=o;i<=n;i++)#define lcr(a,b) memset(a,b,sizeof(a))#define Inf 1<<29int n,m;int mp[100][100];int main(){ while(~dsc(n,m)) { FOR(i,n,1) { FOR(j,n,1) { if(i!=j) { mp[i][j]=Inf; } else { mp[i][j]=0; } } } FOR(i,m,1) { int a,b,c; sc(a); a++; sc(b); b++; sc(c); mp[a][b]=min(mp[a][b],c);//注意里 有可能给你输入a b 相同 距离不同 mp[b][a]=mp[a][b]; } FOR(k,n,1) { FOR(i,n,1) { FOR(j,n,1) { if(i!=j&&j!=k) { mp[i][j]=min(mp[i][j],mp[i][k]+mp[k][j]); } } } } int t,w; dsc(t,w); if(mp[t+1][w+1]==Inf) puts("-1"); else pr(mp[t+1][w+1]); } return 0;}
Dijkstra算法
#include <iostream>#include <cstdio>#include <cstring>#include <cstdlib>#include <algorithm>#include <map>#include <cmath>#include <queue>#include <string>#include <vector>#include <set>using namespace std;#define ll long long#define sc(x) scanf("%d",&x)#define dsc(x,y) scanf("%d%d",&x,&y)#define sssc(x) scanf("%s",s)#define sdsc(x,y) scanf("%s %s",x,y)#define ssc(x,y,z) scanf("%d%d%d",&x,&y,&z)#define pr(x) printf("%d\n",x)#define FOR(i,n,o) for(int i=o;i<=n;i++)#define lcr(a,b) memset(a,b,sizeof(a))#define Inf 1<<29int mp[205][205];int dis[205];int vis[205];int n,m;void dij(int s){ FOR(i,n,1) { vis[i]=0; dis[i]=mp[s][i]; } vis[s]=1; dis[s]=0; FOR(i,n,1) { int to=-1; int d=Inf; FOR(j,n,1) { if(!vis[j]&&d>dis[j]) { d=dis[j]; to=j; } } if(d==Inf) break; vis[to]=1; FOR(j,n,1) { if(!vis[j]&&dis[j]>dis[to]+mp[to][j]) dis[j]=dis[to]+mp[to][j]; } } return ;}int main(){ while(~dsc(n,m)) { lcr(mp,0); FOR(i,n,1) { FOR(j,n,1) { mp[i][j]=Inf; } } FOR(i,m,1) { int a,b,c; ssc(a,b,c); a++,b++; if(mp[a][b]>c) mp[a][b]=mp[b][a]=c; } int a,b; dsc(a,b); dij(a+1); if(dis[b+1]==Inf) puts("-1"); else pr(dis[b+1]); } return 0;}
Bellman-Ford(贝尔曼)算法
#include <iostream>#include <cstdio>#include <cstring>#include <cstdlib>#include <algorithm>#include <map>#include <cmath>#include <queue>#include <string>#include <vector>#include <set>using namespace std;#define ll long long#define sc(x) scanf("%d",&x)#define dsc(x,y) scanf("%d%d",&x,&y)#define sssc(x) scanf("%s",s)#define sdsc(x,y) scanf("%s %s",x,y)#define ssc(x,y,z) scanf("%d%d%d",&x,&y,&z)#define pr(x) printf("%d\n",x)#define FOR(i,n,o) for(int i=o;i<=n;i++)#define lcr(a,b) memset(a,b,sizeof(a))#define Inf 1<<29int dis[206];int vis[205];struct node{ int u; int v; int w;}q[205*205];int n,m;void bellman_floyd(int s){ FOR(i,n,0) { dis[i]=Inf; } dis[s]=0; FOR(i,n,1) { for(int j=1;j<=2*m+1;j++) { if(dis[q[j].u]+q[j].w<dis[q[j].v]) dis[q[j].v]=dis[q[j].u]+q[j].w; } } return ;}int main(){ while(~dsc(n,m)) { for(int i=1;i<=2*m;i+=2) { ssc(q[i].u,q[i].v,q[i].w); q[i+1].v=q[i].u; q[i+1].u=q[i].v; q[i+1].w=q[i].w; } int t,w; dsc(t,w); bellman_floyd(t); if(dis[w]==Inf) puts("-1"); else pr(dis[w]); } return 0;}
END!!!!!!!!!!!!!!!!!!!!!!!!
2 0
- HDU 1874 畅通工程续
- hdu 1874 畅通工程续
- hdu 1874 畅通工程续
- hdu 1874 畅通工程续
- HDU 1874 畅通工程续
- HDU 1874 畅通工程续
- HDU 1874 畅通工程续
- HDU 1874 畅通工程续
- HDU 1874 畅通工程续
- hdu 1874 畅通工程续
- hdu 1874 畅通工程续
- hdu 1874 畅通工程续
- hdu 1874 畅通工程续
- HDU 1874 畅通工程续
- hdu 1874 畅通工程续
- HDU 1874 畅通工程续
- HDU 1874 畅通工程续
- hdu 1874(畅通工程续)
- Ognl标签常用例子 只能在Struts2中使用
- java 拦截器、过滤器、监听器
- 关于android加载Gif图片的方法
- 79. Word Search
- 利用Handler进行网络请求
- HDU 1874 畅通工程续
- 单链表的初步实现---(转置,删除,替换,查找,添加)
- Java 类和对象的初始化过程及初始化顺序
- LeetCode | Find Minimum in Rotated Sorted Array
- poj 1195 Mobile phones
- HTML5与CSS3基础教程-笔记
- JSON数组形式字符串转换为Map数组(转为其他的Bean的话,请参考自行变形)
- CS231n Neural Networks Part 3: Learning and Evaluation Babysitting the learning process
- MFC---利用标题对列表进行排序