程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> POJ 3613 Cow Relays 恰好n步的最短路徑

POJ 3613 Cow Relays 恰好n步的最短路徑

編輯:C++入門知識

 

題目大意:

有T條路,從s到e走n步,求最短路徑。

思路:

看了別人的。。。

先看一下Floyd的核心思想: edge[i][j]=min(edge[i][j],edge[i][k]+edge[k][j])
i到j的最短路是i到j的直接路徑或者經過k點的間接路徑,但是矩陣的更新總是受到上一次更新的影響
如果每次的更新都存進新矩陣,那麼edge[i][k]+edge[k][j]是不是表示只經過三個點兩條邊的路徑呢?
min(edge[i][j],edge[i][k]+edge[k][j])就表示只經過三個點兩條邊的最短路。

 

 

 

 #include
#include
#include
using namespace std;
typedef long long LL;
const int MAXN=256;
const int INF=0x3fffffff;
int num[MAXN<<2];
int n,t,s,e,cnt;
struct  Matrix
{
	LL data[MAXN][MAXN];
	Matrix()
	{
		for(int i=0;i>=1;
	}	
}

int main()
{
	cnt=0;
	scanf(%d%d%d%d,&n,&t,&s,&e);
	int from,to,val;
	memset(num,-1,sizeof(num));
	for(int i=0;i

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved