最近複習了最短路徑的演算法,就寫了4個版本的測試。正好是模板題,就果斷a之。。。
dijkstar版本:
#include#include#include#include#include#include#includeusing namespace std;
#define n 110
#define max 999999
#define clr(arr, what) memset(arr, what, sizeof(arr))
int nodenum, edgenum;
int map[n][n], dis[n];
bool visit[n];
int dijkstra(int src, int des)
return dis[des];
}int main()
answer = dijkstra(1, nodenum);
printf("%d\n", answer);
}return 0;
}
bellman_ford版本:
#include#include#include#include#include#include#includeusing namespace std;
#define n 110
#define max 999999
#define clr(arr, what) memset(arr, what, sizeof(arr))
int nodenum, edgenum;
int map[n][n], dis[n];
bool visit[n];
struct edge
e[n * n / 2];
int bellman_ford(int src, int des)
int main()
answer = bellman_ford(1, nodenum);
printf("%d\n", answer);
}return 0;
}
floyd版本:
#include#include#include#include#include#include#includeusing namespace std;
#define n 110
#define max int_max >> 1
#define clr(arr, what) memset(arr, what, sizeof(arr))
int nodenum, edgenum;
int map[n][n], dis[n];
bool visit[n];
int floyd(int src, int des) //多源多匯最短路
int main()
answer = floyd(1, nodenum);
printf("%d\n", answer);
}return 0;
}
spfa版本:
#include#include#include#include#include#include#includeusing namespace std;
#define n 110
#define max int_max >> 1
#define clr(arr, what) memset(arr, what, sizeof(arr))
int nodenum, edgenum;
int map[n][n], dis[n];
bool visit[n];
int spfa(int src, int des)}}
}return dis[des];
}int main()
answer = spfa(1, nodenum);
printf("%d\n", answer);
}return 0;
}
hdu 2544 最短路(最短路)
time limit1000 ms memory limit32768 kb 在每年的校賽裡,所有進入決賽的同學都會獲得一件很漂亮的t shirt。但是每當我們的工作人員把上百件的衣服從商店運回到賽場的時候,卻是非常累的!所以現在他們想要尋找最短的從商店到賽場的路線,你可以幫助他們嗎?input輸入...
HDU2544最短路(最短路徑)
description 在每年的校賽裡,所有進入決賽的同學都會獲得一件很漂亮的t shirt。但是每當我們的工作人員把上百件的衣服從商店運回到賽場的時候,卻是非常累的!所以現在他們想要尋找最短的從商店到賽場的路線,你可以幫助他們嗎?input 輸入包括多組資料。每組資料第一行是兩個整數n m n 1...
HDU 2544 最短路 最短路問題
解題報告 這題就是求兩個單源點之間的最小距離,屬於最短路問題,由於資料量很小,只有100,所以這題可以用弗洛伊德也可以用迪傑斯特拉,都可以過,但是用迪傑斯特拉會快一點,但用弗洛伊德的 會稍短一點,純屬裸的演算法題,這裡給出兩種演算法的 弗洛伊德演算法 1 include2 include3 incl...