在每年的校赛里,所有进入决赛的同学都会获得一件很漂亮的t-shirt。但是每当我们的工作人员把上百件的衣服从商店运回到赛场的时候,却是非常累的!所以现在他们想要寻找最短的从商店到赛场的路线,你可以帮助他们吗?

Input输入包括多组数据。每组数据第一行是两个整数N、M(N<=100,M<=10000),N表示成都的大街上有几个路口,标号为1的路口是商店所在地,标号为N的路口是赛场所在地,M则表示在成都有几条路。N=M=0表示输入结束。接下来M行,每行包括3个整数A,B,C(1<=A,B<=N,1<=C<=1000),表示在路口A与路口B之间有一条路,我们的工作人员需要C分钟的时间走过这条路。 
输入保证至少存在1条商店到赛场的路线。 
Output对于每组输入,输出一行,表示工作人员从商店走到赛场的最短时间Sample Input

2 1
1 2 3
3 3
1 2 5
2 3 5
3 1 2
0 0

Sample Output

3
2 简单的最短路板子题,用来练习各种算法,代码如下:
dijkstra:
const int maxm = ;
const int INF = 0x7fffffff; int N, M, G[maxm][maxm], d[maxm], vis[maxm]; struct Node {
int sum, i;
Node(int _sum, int _i) : sum(_sum), i(_i){} bool operator<(const Node &a) const {
return a.sum < sum;
}
}; void init() {
for (int i = ; i <= N; ++i) {
d[i] = INF;
}
memset(G, , sizeof(G)), memset(vis, , sizeof(vis));
} int main() {
while(scanf("%d%d",&N,&M) && N + M) {
init();
for (int i = ; i < M; ++i) {
int t1, t2, t3;
scanf("%d%d%d", &t1, &t2, &t3);
G[t1][t2] = G[t2][t1] = t3;
}
priority_queue<Node>q;
q.push(Node(, ));
while(!q.empty()) {
Node p = q.top();
q.pop();
if(vis[p.i]++)
continue;
for (int i = ; i <= N; ++i) {
if(G[p.i][i] && G[p.i][i] + d[p.i] < d[i]) {
d[i] = G[p.i][i] + d[p.i];
q.push(Node(d[i],i));
}
}
}
printf("%d\n", d[N]);
}
return ;
}

 Bellman_Ford:

const int maxm = ;
const int maxn = ;
const int INF = 0x7fffffff; int N, M, v[maxn], u[maxn], cost[maxn], d[maxm]; void init() {
memset(v, , sizeof(v)), memset(u, , sizeof(u)), memset(cost, , sizeof(cost));
for (int i = ; i <= N; ++i)
d[i] = INF;
} int main() {
while(scanf("%d%d",&N,&M) && N + M) {
init();
for (int i = ; i < M; ++i) {
int t1, t2, t3;
scanf("%d%d%d", &t1, &t2, &t3);
v[i * ] = t1, u[i * ] = t2, cost[i * ] = t3;
v[i * + ] = t2, u[i * + ] = t1, cost[i * + ] = t3;
}
for (int j = ; j < N-; ++j) {
for (int i = ; i < M * ; ++i) {
int x = v[i], y = u[i], c = cost[i];
if(d[x] < INF)
d[y] = min(d[y], d[x] + c);
}
} printf("%d\n", d[N]);
}
return ;
}

SPFA:

const int maxm = ;
const int INF = 0x7fffffff; int N, M, G[maxm][maxm], d[maxm], inq[maxm]; struct Node {
int sum, i;
Node(int _sum, int _i) : sum(_sum), i(_i){}
}; void init() {
for (int i = ; i <= N; ++i) {
d[i] = INF;
}
memset(G, , sizeof(G)), memset(inq, , sizeof(inq));
} int main() {
while(scanf("%d%d",&N,&M) && N + M) {
init();
for (int i = ; i < M; ++i) {
int t1, t2, t3;
scanf("%d%d%d", &t1, &t2, &t3);
G[t1][t2] = G[t2][t1] = t3;
}
queue<int>q;
q.push();
inq[] = ;
while(!q.empty()) {
int u = q.front();
q.pop();
inq[u] = ;
for (int i = ; i <= N; ++i) {
if(G[u][i] && G[u][i] + d[u] < d[i]) {
d[i] = G[u][i] + d[u];
if(!inq[i])
q.push(i);
}
}
}
printf("%d\n", d[N]);
}
return ;
}

 Floyd:

const int maxm = ;
const int INF = 0x7fffffff; int N, M, G[maxm][maxm]; void init() {
for(int i = ; i <= N; ++i) {
for (int j = ; j <= N; ++j) {
if(i == j)
G[i][i] = ;
else
G[i][j] = INF;
}
}
} int main() {
while(scanf("%d%d",&N,&M) && N + M) {
init();
for (int i = ; i < M; ++i) {
int t1, t2, t3;
scanf("%d%d%d", &t1, &t2, &t3);
G[t1][t2] = G[t2][t1] = t3;
}
for (int k = ; k <= N; ++k)
for(int i = ; i <= N; ++i)
for (int j = ; j <= N; ++j) {
if(G[i][k] < INF && G[k][j] < INF)
G[i][j] = min(G[i][j], G[i][k] + G[k][j]);
}
printf("%d\n", G[][N]);
}
return ;
}

Day4-A-最短路 HDU2544的更多相关文章

  1. ACM-最短路(SPFA,Dijkstra,Floyd)之最短路——hdu2544

    ***************************************转载请注明出处:http://blog.csdn.net/lttree************************** ...

  2. 最短路--hdu2544

    最短路 Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...

  3. HZNU-ACM寒假集训Day4小结 最短路

    最短路 1.Floy 复杂度O(N3)  适用于任何图(不存在负环) 模板 --kuangbin #include<iostream> #include<cstdio> #in ...

  4. A过的题目

    1.TreeMap和TreeSet类:A - Language of FatMouse ZOJ1109B - For Fans of Statistics URAL 1613 C - Hardwood ...

  5. HDU-2544 最短路 Dijkstra模板题

    题目链接:https://vjudge.net/problem/HDU-2544 题意: 题目要求找到节点1到节点n之间的一条最短路 分析: Dijkstra模板题 单源最短路径,可以用dijkstr ...

  6. HDU2544 最短路dij

    纯最短路. ///HDU 2544堆优化的最短路 #include <cstdio> #include <iostream> #include <sstream> ...

  7. hdu2544 最短路 Dijkstra算法

    最短路(Dijkstra算法模板题) Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Other ...

  8. 最短路(hdu2544)Dijkstra算法二

    最短路 Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submis ...

  9. HDU2544 最短路 2017-04-12 18:51 31人阅读 评论(0) 收藏

    最短路 Time Limit : 5000/1000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other) Total Submissio ...

随机推荐

  1. CSS样式的优先级(权重)

    当使用不同的选择器选中同一个元素并设置相同样式时,这时样式间产生了冲突 最终采用的是哪个选择器? 由选择器的优先级(权重)决定,权重高的优先显示 优先级规则(多个按位置分别进行计算,不进位): 内联样 ...

  2. 吴裕雄--天生自然Numpy库学习笔记:NumPy 数学函数

    NumPy 包含大量的各种数学运算的函数,包括三角函数,算术运算的函数,复数处理函数等. NumPy 提供了标准的三角函数:sin().cos().tan(). import numpy as np ...

  3. 【原】tcp三次握手和四次挥手

  4. 蓝牙/zigbee/nrr24xx

    目前使用的短距离无线通信技术及标准主要有Bluetooth.WIFI.ZigBee.UWB.NRF24XX系列产品等.Nordic公司生产的单片集成射频无线收发器NRF24XX系列芯片具有低功耗.支持 ...

  5. 中国5G,如何避免重复投资?

    前不久,工信部正式向中国移动.中国联通.中国电信发放5G商用牌照,此举意味着中国提前启动5G商用计划,随之而来的,将会是运营商.设备商大规模的投资.相关数据机构预测,三大运营商2019年预计会投入30 ...

  6. Mac 如何导出ipa文件中Assets.car包中的切图

    在之前 获取 AppStore 中 应用 的 IPA 包文件(Mac OS 13+)中获取到应用的 IPA 包,可以取出应用的部分图片(如 Logo),如果项目工程中把图片添加到 Assets.xca ...

  7. ios中使用socket实现聊天

    [iOS]SocketRocket简单实现聊天室功能 https://www.jianshu.com/p/db34940f1135      CocoaAsyncSocket   https://gi ...

  8. HTML常用标签效果展示

    HTML常用标签效果展示 一.文本效果 段落1---收到了开发建设看来得更加快乐圣诞节福利肯定是减肥的路上苏里科夫就是打开了飞机都是风口浪尖上的疯狂了大煞风景圣诞快乐的索科洛夫几点上课了关键是低空掠过 ...

  9. SpringBoot笔记二:整合篇

    Spring Boot与缓存 jsr-107 Java Caching定义了5个核心接口分别是CachingProvider, CacheManager, Cache, Entry 和 Expiry. ...

  10. 吴裕雄 Bootstrap 前端框架开发——Bootstrap 排版:地址(Address)

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...