hdoj 1142 A Walk Through the Forest
2012-03-18 19:23
369 查看
找到所有2到1的最短路的距离,然后从1开始搜索符合条件的最短路。
/* HDOJ: 1142 A Walk Through the Forest */ #include <iostream> #include <cstdio> #include <cstring> #define MaxD (1 << 20) #define MaxN (1 << 10) using namespace std; long map[MaxN][MaxN]; bool visited[MaxN]; long dis[MaxN]; long long res[MaxN]; int n, m; void Dijkstra(int v); long long solve(int v); int main() { //freopen("data.in", "rb", stdin); while(scanf("%d", &n) != EOF && n) { for(int i = 1; i <= n; i++) { for(int j = 1; j <= n; j++) { map[i][j] = i == j ? 0 : MaxD; } } scanf("%d", &m); for(int i = 0; i < m; i++) { int a, b, c; scanf("%d%d%d", &a, &b, &c); map[a][b] = map[b][a] = c; } Dijkstra(2); memset(res, -1, sizeof(res)); printf("%lld\n", solve(1)); } return 0; } void Dijkstra(int v) { for(int i = 1; i <= n; i++) { visited[i] = false; dis[i] = map[2][i]; } visited[2] = true; dis[2] = 0; for(int i = 2; i <= n; i++) { int tmp = MaxD; int tmp_index = 0; for(int j = 1; j <= n; j++) { if(!visited[j] && dis[j] < tmp) { tmp = dis[j]; tmp_index = j; } } visited[tmp_index] = true; for(int k = 1; k <= n; k++) { if(!visited[k] && dis[k] > dis[tmp_index] + map[k][tmp_index]) { dis[k] = dis[tmp_index] + map[k][tmp_index]; } } } } long long solve(int v) { if(res[v] != -1) return res[v]; if(v == 2) return 1; res[v] = 0; for(int i = 1; i <= n; i++) { if(map[i][v] != MaxD && dis[i] < dis[v]) res[v] += solve(i); } return res[v]; }
相关文章推荐
- hdoj 1142 A Walk Through the Forest
- HDOJ 1142 A Walk Through the Forest
- HDOJ1142 A Walk Through the Forest
- HDOJ-1142-A Walk Through the Forest
- HDOJ 题目1142 A Walk Through the Forest(spfa dfs)
- HDOJ 1142 A Walk Through the Forest(最短路+记忆化搜索)
- HDOJ 1142 A Walk Through the Forest 【Dijkstra】+【DFS】
- HDOJ/HDU 1142 A Walk Through the Forest
- hdoj 1142 A Walk Through the Forest(记忆化搜索+最短路)
- HDOJ-1142 A Walk Through the Forest
- hdoj 1142 A Walk Through the Forest 【dijkstra + dfs】
- HDOJ1142 A Walk Through the Forest
- HDoj 1142 A Walk Through the Forest(记忆化收索+dijik)
- HDU1142 A Walk Through the Forest 【SPFA】+【记忆化搜索】
- hdu-1142-A Walk Through the Forest-最短路+记忆化搜索
- POJ 1142 A Walk Through the Forest ( 最短路 +记忆化搜索)
- HDU-1142-A Walk Through the Forest(Dijkstra+dfs)
- HDU1142-A Walk Through the Forest(记忆化搜索+SPFA)
- [HDU 1142] A Walk Through the Forest
- HDU:1142 A Walk Through the Forest