HDU - 2066 一个人的旅行 —— dijkstra

一个人的旅行

Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 40843    Accepted Submission(s): 13886


Problem Description
虽然草儿是个路痴(就是在杭电待了一年多,居然还会在校园里迷路的人,汗~),但是草儿仍然很喜欢旅行,因为在旅途中 会遇见很多人(白马王子,^0^),很多事,还能丰富自己的阅历,还可以看美丽的风景……草儿想去很多地方,她想要去东京铁塔看夜景,去威尼斯看电影,去阳明山上看海芋,去纽约纯粹看雪景,去巴黎喝咖啡写信,去北京探望孟姜女……眼看寒假就快到了,这么一大段时间,可不能浪费啊,一定要给自己好好的放个假,可是也不能荒废了训练啊,所以草儿决定在要在最短的时间去一个自己想去的地方!因为草儿的家在一个小镇上,没有火车经过,所以她只能去邻近的城市坐火车(好可怜啊~)。
 

Input
输入数据有多组,每组的第一行是三个整数T,S和D,表示有T条路,和草儿家相邻的城市的有S个,草儿想去的地方有D个;
接着有T行,每行有三个整数a,b,time,表示a,b城市之间的车程是time小时;(1=<(a,b)<=1000;a,b 之间可能有多条路)
接着的第T+1行有S个数,表示和草儿家相连的城市;
接着的第T+2行有D个数,表示草儿想去地方。
 

Output
输出草儿能去某个喜欢的城市的最短时间。
 

Sample Input
  
  
6 2 3 1 3 5 1 4 7 2 8 12 3 8 4 4 9 12 9 10 2 1 2 8 9 10
 

Sample Output
  
  
9


思路:最短路径 有多个起点 输入的时候找到编号最大的点 有重边 


#include <iostream>
#include <cstdio>
#include <cstring>
#include <queue>
#define inf 0x3f3f3f3f
#define max_ 1020
using namespace std;
struct edge
{
	int to,w;
	bool operator < (const edge &a)const
	{
		return a.w<w;
	}
}e;
int n,t,s,d,mp[max_][max_],dis[max_],num[max_],maxx;
bool vis[max_];
priority_queue<edge>q;
void dijkstra()
{
	int u,v;
	while(q.size())
	{
		e=q.top();
		q.pop();
		u=e.to;
		if(vis[u])
			continue;
		vis[u]=true;
		for(v=1;v<=n;v++)
		{
			if(vis[v]==false,mp[u][v]<inf)
			{
				if(dis[v]>dis[u]+mp[u][v])
				{
					dis[v]=dis[u]+mp[u][v];
					e.to=v;
					e.w=dis[v];
					q.push(e);
				}
			}
		}
	}
}
int main()
{
	while(scanf("%d%d%d",&t,&s,&d)!=EOF)
	{
		memset(mp,0x3f,sizeof(mp));
		memset(dis,0x3f,sizeof(dis));
		memset(vis,false,sizeof(vis));
		while(q.size())
			q.pop();
		while(t--)
		{
			int a,b,c;
			scanf("%d%d%d",&a,&b,&c);
			maxx=max( ( max(a,b) ) ,maxx);
			if(mp[a][b]>c)
				mp[a][b]=mp[b][a]=c;
		}
		n=maxx;
		int i,j;
		for(i=1;i<=n;i++)
		{
			mp[i][i]=0;
			dis[i]=inf;
		}
		dis[0]=0;
		for(i=1;i<=s;i++)
		{
			int be;
			scanf("%d",&be);
			dis[be]=0;
			mp[0][be]=0;
			mp[be][0]=0;
			e.to=be;
			e.w=0;
			q.push(e);
		}
		dijkstra();
		int minn=inf;
		while(d--)
		{
			int r;
			scanf("%d",&r);
			minn=min(dis[r],minn);
		}
		printf("%d\n",minn);
	}
}


数据治理是确保数据准确性、可靠性、安全性、可用性和完整性的体系和框架。它定义了组织内部如何使用、存储、保护和共享数据的规则和流程。数据治理的重要性随着数字化转型的加速而日益凸显,它能够提高决策效率、增强业务竞争力、降低风险,并促进业务创新。有效的数据治理体系可以确保数据在采集、存储、处理、共享和保护等环节的合规性和有效性。 数据质量管理是数据治理中的关键环节,它涉及数据质量评估、数据清洗、标准化和监控。高质量的数据能够提升业务决策的准确性,优化业务流程,并挖掘潜在的商业价值。随着大数据和人工智能技术的发展,数据质量管理在确保数据准确性和可靠性方面的作用愈发重要。企业需要建立完善的数据质量管理和校验机制,并通过数据清洗和标准化提高数据质量。 数据安全与隐私保护是数据治理中的另一个重要领域。随着数据量的快速增长和互联网技术的迅速发展,数据安全与隐私保护面临前所未有的挑战。企业需要加强数据安全与隐私保护的法律法规和技术手段,采用数据加密、脱敏和备份恢复等技术手段,以及加强培训和教育,提高安全意识和技能水平。 数据流程管理与监控是确保数据质量、提高数据利用率、保护数据安全的重要环节。有效的数据流程管理可以确保数据流程的合规性和高效性,而实时监控则有助于及时发现并解决潜在问题。企业需要设计合理的数据流程架构,制定详细的数据管理流程规范,并运用数据审计和可视化技术手段进行监控。 数据资产管理是将数据视为组织的重要资产,通过有效的管理和利用,为组织带来经济价值。数据资产管理涵盖数据的整个生命周期,包括数据的创建、存储、处理、共享、使用和保护。它面临的挑战包括数据量的快速增长、数据类型的多样化和数据更新的迅速性。组织需要建立完善的数据管理体系,提高数据处理和分析能力,以应对这些挑战。同时,数据资产的分类与评估、共享与使用规范也是数据资产管理的重要组成部分,需要制定合理的标准和规范,确保数据共享的安全性和隐私保护,以及建立合理的利益分配和权益保障机制。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值