poj 1122 FDNY to the Rescue!

标签: 最短路径
408人阅读 评论(0) 收藏 举报
分类:

关键是建图,zoj也有一题,不过格式要求不一样,数据好像也不一样,卡那儿了!

下面是能过poj的代码:

#include <iostream>
#include <cstring>
#include <algorithm>
#include <cstdio>

using namespace std;

const int MAXN = 25;
const int INF = 10000010;

struct Dist
{
	bool station;
	int num;
	int T;
	Dist()
	{
		station = false;
		num = 0;
		T = 0;
	}
}dist[MAXN];

int Edge[MAXN][MAXN];
int path[MAXN];
int S[MAXN];
int n;

int cmp(Dist a, Dist b)
{
	return a.T < b.T;
}

void Dijkstra(int v0)
{
	int i, j;
	for (i = 0; i < n; ++i)
	{
		dist[i].T = Edge[i][v0];
		S[i] = 0;
		if(Edge[i][v0] < INF && i != v0)
			path[i] = v0;
		else
			path[i] = -1;
	}
	S[v0] = 0;
	for (i = 1; i < n; ++i)
	{
		int MIN = INF, v;
		for (j = 0; j < n; ++j)
		{
			if(!S[j] && MIN > dist[j].T)
			{
				MIN = dist[j].T;
				v = j;
			}
		}
		S[v] = 1;
		for (j = 0; j < n; ++j)
		{
			if (!S[j] && Edge[j][v] < INF && dist[j].T > dist[v].T + Edge[j][v])
			{
				dist[j].T = dist[v].T + Edge[j][v];
				path[j] = v;
			}
		}
	}
}

void OutPut(int u)
{
	cout<<u+1<<"\t";
	if(path[u] != -1)
		OutPut( path[u] );
}

int main()
{
	//int T;
	int i, j;
	cin>>n;
	for (i = 0; i < n; ++i)
	{
		for (j = 0; j < n; ++j)
		{
			cin>>Edge[i][j];
			if (Edge[i][j] == -1)
			{
				Edge[i][j] = INF;
			}
		}
	}
	int v0;
	cin>>v0;
	char s[1010];
	gets(s);
	int len = strlen(s);
	for (i = 0; i < len; ++i)
	{
		int t = s[i] - '0';
		dist[t-1].station = true;
		dist[t-1].num = t-1;
	}
	Dijkstra(v0-1);
	sort(dist, dist+n, cmp);
	cout<<"Org\tDest\tTime\tPath"<<endl;
	for (i = 0; i < n; ++i)
	{
		if (dist[i].station)
		{
			cout<<dist[i].num+1<<"\t"<<v0<<"\t"<<dist[i].T<<"\t";
			OutPut(dist[i].num);
			cout<<endl;
	}
}
	//system("pause");
	return 0;
}


0
0
猜你在找
【直播】计算机视觉原理及实战——屈教授
【套餐】深度学习入门视频课程——唐宇迪
【套餐】Hadoop生态系统零基础入门
【套餐】嵌入式Linux C编程基础
【套餐】2017软考系统集成项目——任铄
【套餐】Android 5.x顶级视频课程——李宁
【直播】广义线性模型及其应用——李科
【直播】从0到1 区块链的概念到实践
【直播】机器学习之凸优化——马博士
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:239798次
    • 积分:6833
    • 等级:
    • 排名:第3357名
    • 原创:466篇
    • 转载:19篇
    • 译文:0篇
    • 评论:13条