poj3268
来源:互联网 发布:apache部署webservice 编辑:程序博客网 时间:2024/05/16 14:42
/*
* poj3268.cpp
*
* Created on: 2010-8-3
* Author: friendy
*/
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define inf 99999999
using namespace std;
int map[1001][1001];
int used[1001];
int dis1[1001], dis2[1001];
int n;
//dijkstra for the shortest-path
//
void dij1(int u) {
int i, j, k, min;
for (i = 1; i <= n; i++)
dis1[i] = map[u][i];
used[u] = 1;
for (i = 1; i < n; i++) {
min = inf;
for (j = 1; j <= n; j++) {
if (!used[j] && dis1[j] < min) {
min = dis1[j];
k = j;
}
}
used[k] = 1;
for (j = 1; j <= n; j++) {
if (!used[j] && dis1[j] > dis1[k] + map[k][j])
dis1[j] = dis1[k] + map[k][j];
}
}
}
//dijkstra for the shortest-path
//reversed matrix
void dij2(int u) {
int i, j, k, min;
for (i = 1; i <= n; i++)
dis2[i] = map[i][u];
used[u] = 1;
for (i = 1; i < n; i++) {
min = inf;
for (j = 1; j <= n; j++) {
if (!used[j] && dis2[j] < min) {
min = dis2[j];
k = j;
}
}
used[k] = 1;
for (j = 1; j <= n; j++) {
if (!used[j] && dis2[j] > dis2[k] + map[j][k])
dis2[j] = dis2[k] + map[j][k];
}
}
}
int main() {
int i, j, m, x, a, b, c;
scanf("%d%d%d", &n, &m, &x);
//in
for (i = 1; i <= n; i++)
for (j = 1; j <= n; j++) {
if (i == j)
map[i][j] = 0;
else
map[i][j] = inf;
}
//create graph
for (i = 0; i < m; i++) {
scanf("%d%d%d", &a, &b, &c);
map[a][b] = c;
}
//
memset(used, 0, sizeof(used));
dij1(x);
memset(used, 0, sizeof(used));
dij2(x);
int max = 0;
for (i = 1; i <= n; i++) {//get the bigger of the shortest-path
if (max < dis1[i] + dis2[i] && i != x)
max = dis1[i] + dis2[i];
}
printf("%d/n", max);
}
- poj3268
- poj3268
- poj3268
- poj3268
- POJ3268
- poj3268
- poj3268
- poj3268
- POJ3268
- poj3268
- poj3268
- poj3268
- poj3268
- POJ3268
- poj3268
- poj3268
- poj3268---spfa
- POJ3268 SPFA
- php system命令在windows无效
- TweenLite 缓动类
- 【飞秋】TCP粘包
- Linux内核启动
- dsb
- poj3268
- PV3D手记
- 【飞秋】SQL Server性能调教系列(4)--Profiler(上)
- ubuntu 10.04 安装好后必须要做的事(嵌入式开发)
- pku1624 This Takes the Cake
- 经营之道
- BasicView
- 【飞秋】网络的基础-域名篇
- 【飞秋】基于Html5的Canvas实现的Clocks (钟表)