题意:略。

析:由于 n 比较小,所以我们可以用Floyd,完全不会超时。

代码如下:

#pragma comment(linker, "/STACK:1024000000,1024000000")
#include <cstdio>
#include <string>
#include <cstdlib>
#include <cmath>
#include <iostream>
#include <cstring>
#include <set>
#include <queue>
#include <algorithm>
#include <vector>
#include <map>
#include <cctype>
#include <cmath>
#include <stack>
#define debug puts("+++++")
//#include <tr1/unordered_map>
#define freopenr freopen("in.txt", "r", stdin)
#define freopenw freopen("out.txt", "w", stdout)
using namespace std;
//using namespace std :: tr1; typedef long long LL;
typedef pair<int, int> P;
const int INF = 0x3f3f3f3f;
const double inf = 0x3f3f3f3f3f3f;
const LL LNF = 0x3f3f3f3f3f3f;
const double PI = acos(-1.0);
const double eps = 1e-8;
const int maxn = 1e2 + 5;
const LL mod = 1e9 + 7;
const int N = 1e6 + 5;
const int dr[] = {-1, 0, 1, 0, 1, 1, -1, -1};
const int dc[] = {0, 1, 0, -1, 1, -1, 1, -1};
const char *Hex[] = {"0000", "0001", "0010", "0011", "0100", "0101", "0110", "0111", "1000", "1001", "1010", "1011", "1100", "1101", "1110", "1111"};
inline LL gcd(LL a, LL b){ return b == 0 ? a : gcd(b, a%b); }
inline int gcd(int a, int b){ return b == 0 ? a : gcd(b, a%b); }
inline int lcm(int a, int b){ return a * b / gcd(a, b); }
int n, m;
const int mon[] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
const int monn[] = {0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
inline int Min(int a, int b){ return a < b ? a : b; }
inline int Max(int a, int b){ return a > b ? a : b; }
inline LL Min(LL a, LL b){ return a < b ? a : b; }
inline LL Max(LL a, LL b){ return a > b ? a : b; }
inline bool is_in(int r, int c){
return r >= 0 && r < n && c >= 0 && c < m;
}
int a[maxn];
int dp[maxn][maxn]; int main(){
while(scanf("%d %d", &n, &m) == 2){
if(!m && !n) break;
int x, y, c;
for(int i = 1; i <= n; ++i)
for(int j = 1; j <= n; ++j) dp[i][j] = 100000;
for(int i = 0; i < m; ++i){
scanf("%d %d %d", &x, &y, &c);
dp[x][y] = dp[y][x] = c;
}
for(int k = 1; k <= n; ++k){
for(int i = 1; i <= n; ++i){
for(int j = 1; j <= n; ++j){
dp[i][j] = min(dp[i][j], dp[i][k]+dp[k][j]);
}
}
}
printf("%d\n", dp[1][n]);
}
return 0;
}

最新文章

  1. Sass预一:
  2. RColorBrewer包---R语言的配色方案
  3. [daily][device] linux添加打印机
  4. MySQL 错误
  5. Mvc下异步断点续传大文件
  6. JSP--监听HTTP会话
  7. Java Day 05
  8. .Net Core 学习 (1) - ASP.NET Core 总览
  9. ffmpeg和opencv 播放视频文件和显示器
  10. python制作wifi破解(跑字典(单线程))
  11. DigitalClock的替代者TextClock
  12. Solidity合约间的调用 -Solidity通过合约转ERC20代币
  13. 第八章:四大组件之Content Provider
  14. 转:JAVA守护线程
  15. 客户端优化之使用javascript原生方法替代复杂的数学运算和jquery方法
  16. LeetCode—66、88、118、119、121 Array(Easy)
  17. 数据结构与算法--最短路径之Floyd算法
  18. Python2.7-io
  19. shell批量杀进程
  20. ExpressRoute 合作伙伴和对等位置

热门文章

  1. 如何在matlab里安装libsvm包
  2. CSU 1225 最长上升子序列并记录其个数
  3. noip模拟赛 星空
  4. 【BZOJ4474】isomorphism(树的同构,哈希)
  5. codevs——2750 心系南方灾区
  6. Ubuntu 16.04安装磁盘占用分析器:ncdu
  7. Oracle数据库导入导出简单备份
  8. html中布局,让下一个子元素占据剩余的高度
  9. bzoj 1266 [AHOI2006] 上学路线 route 题解
  10. CodeForces484A Bits(贪心)