POJ 3615 floyd 求任意起点终点的最短路
2013-06-14 19:48
381 查看
http://poj.org/problem?id=3615
题意:求起点到终点的最短路,不存在则输出-1.这题居然tle两次,把floyd放在外面就行了。
View Code
题意:求起点到终点的最短路,不存在则输出-1.这题居然tle两次,把floyd放在外面就行了。
View Code
// I'm lanjiangzhou //C #include <stdio.h> #include <stdlib.h> #include <string.h> #include <ctype.h> #include <math.h> #include <time.h> //C++ #include <iostream> #include <algorithm> #include <cstdio> #include <cstdlib> #include <cmath> #include <cstring> #include <cctype> #include <stack> #include <string> #include <list> #include <queue> #include <map> #include <vector> #include <deque> #include <set> using namespace std; //*************************OUTPUT************************* #ifdef WIN32 #define INT64 "%I64d" #define UINT64 "%I64u" #else #define INT64 "%lld" #define UINT64 "%llu" #endif //**************************CONSTANT*********************** #define INF 0x3f3f3f3f #define eps 1e-8 #define PI acos(-1.) #define PI2 asin (1.); typedef long long LL; //typedef __int64 LL; //codeforces typedef unsigned int ui; typedef unsigned long long ui64; #define MP make_pair typedef vector<int> VI; typedef pair<int, int> PII; #define pb push_back #define mp make_pair //***************************SENTENCE************************ #define CL(a,b) memset (a, b, sizeof (a)) #define sqr(a,b) sqrt ((double)(a)*(a) + (double)(b)*(b)) #define sqr3(a,b,c) sqrt((double)(a)*(a) + (double)(b)*(b) + (double)(c)*(c)) //****************************FUNCTION************************ template <typename T> double DIS(T va, T vb) { return sqr(va.x - vb.x, va.y - vb.y); } template <class T> inline T INTEGER_LEN(T v) { int len = 1; while (v /= 10) ++len; return len; } template <typename T> inline T square(T va, T vb) { return va * va + vb * vb; } // aply for the memory of the stack //#pragma comment (linker, "/STACK:1024000000,1024000000") //end const int maxn =1010; int edges[maxn][maxn]; int n,m,t; int u,v,w; int maxx(int a,int b){ return a>b?a:b; } int minn(int a,int b){ return a>b?b:a; } void floyd(){ for(int k=1;k<=n;k++){ for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++){ edges[i][j]=minn(edges[i][j],maxx(edges[i][k],edges[k][j])); } } } } int main(){ while(scanf("%d%d%d",&n,&m,&t)!=EOF) { for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++){ edges[i][j]=INF; } edges[i][i]=0; } for(int i=1;i<=m;i++){ scanf("%d%d%d",&u,&v,&w); edges[u][v]=w; } int start,end; floyd();//放在外面,里面超时 for(int i=1;i<=t;i++){ scanf("%d%d",&start,&end); if(edges[start][end]==INF){ printf("-1\n"); } else printf("%d\n",edges[start][end]); } } //floyd(); return 0; }
相关文章推荐
- POJ 3615 floyd 求任意起点终点的最短路
- poj 3328(spfa)多终点多起点的最短路
- POJ - 2139 Six Degrees of Cowvin Bacon(任意两点最短路,Floyd)
- poj-3268 Silver Cow Party (最短路-spfa-求到同一起点,同一终点的最短路)
- poj 3328(多起点多终点的最短路)
- poj 3328(多起点多终点的最短路)
- Cow Contest(POJ 3660)(Floyd)(任意两点间最短路)
- POJ - 3268 Silver Cow Party解题报告(dijkstra分别求单源起点和单源终点的最短路)
- Floyd-Warshall算法(求解任意两点间的最短路) 详解 + 变形 之 poj 2253 Frogger
- POJ 2139 Six Degrees of Cowvin Bacon(任意两点最短路,Floyd)
- poj 3615(Floyd变形)
- POJ 3259 Wormholes(floyd求负环,最短路)
- POJ 2253 Frogger最短路(floyd)
- POJ 2240 Arbitrage(Floyd最短路)
- POJ 1125 Stockbroker Grapevine (多源最短路Floyd)
- poj 1125 Stockbroker Grapevine(floyd求最短路)
- POJ2263最短路变形//起点到终点最大载货量
- Floyd-Warshall算法求任意两点间的最短路(图论算法)
- POJ Stockbroker Grapevine 1125 多源最短路(Floyd)
- HDU2066 最短路spfa 多起点 多终点 基础题