zoukankan      html  css  js  c++  java
  • hdu 2066 一个人的旅行

    最短路问题。果然好久不做都忘得差点儿相同了,跑一次Dijkstra算法把全部点的最短距离都跑出来

    #include<iostream>
    #include<cstring>
    #define maxn 1005
    #define inf 1<<30
    using namespace std;
    int t,s,d;
    int mapp[maxn][maxn];
    int w[maxn];
    int visit[maxn];
    int di[maxn];
    void solve()
    {
    	memset(visit,0,sizeof(visit));
    	fill(di,di+maxn,inf);
    	di[0]=0;
    	while(t--)
    	{
    		int v=-1;
    		for(int i=0;i<maxn;i++)
    		{
    			if(!visit[i]&&(v==-1||di[i]<di[v])) v=i;
    		}
    		//cout<<s<<"~"<<v<<endl;
    		visit[v]=1;
    		for(int i=0;i<maxn;i++)
    		{
    			if(mapp[v][i]!=inf)
    			{
    				di[i]=min(di[i],di[v]+mapp[v][i]);
    				//cout<<i<<"~"<<di[i]<<endl;
    			}
    		}	
    	}
    }
    int main()
    {
    	while(cin>>t>>s>>d)
    	{
    		for(int i=0;i<maxn;i++)
    		{
    			for(int j=0;j<maxn;j++) mapp[i][j]=inf;
    		}
    		for(int i=0;i<t;i++)
    		{
    			int x,y,z;
    			cin>>x>>y>>z;
    			mapp[y][x]=mapp[x][y]=min(z,mapp[x][y]);
    		}
    		for(int i=0;i<s;i++)
    		{
    			int x;
    			cin>>x;
    			mapp[0][x]=mapp[x][0]=0;
    		}
    		for(int i=0;i<d;i++) cin>>w[i];
    		solve();
    		int re=inf;
    		for(int i=0;i<d;i++)
    		{
    			re=min(re,di[w[i]]);
    		}
    		cout<<re<<endl;
    	}
    	return 0;
    }


  • 相关阅读:
    索引与完整性约束(note6)
    数据库查询语句(note4)
    select 查询(note3)
    数据库创建(note2)
    mysql(note1)
    day 05
    day 04 字符串
    博文索引
    ubuntu+xen的编译
    hexo+github搭建个人网站
  • 原文地址:https://www.cnblogs.com/brucemengbm/p/6953013.html
Copyright © 2011-2022 走看看