HDU2066【Dijkstra】

传送门:http://acm.hdu.edu.cn/showproblem.php?pid=2066

【分析】Dijkstra的模板题目(水题),由于刚学,然后虽然自己AC了,但是在想去的城市中找最短路径的时候我用了暴力,我看到了一个更好的。

【我的代码】
#include
#include
#include
#include
using namespace std;
int map[1000+10][1000+10];
int dist[1000+10];
int path[1000+10];
int s[1000+10];
const int M=0x3f3f3f3f;
int big;
int city[1000+10];
void Dijkstra(int v);
int main()
{
	int t,s,d;
	while(scanf("%d%d%d",&t,&s,&d)!=EOF)
	{
		for(int i=0;i<1000+10;i++)
		{
			for(int j=0;j<1000+10;j++)
			{
				if(i==j)
					map[i][j]=0;
				else
					map[i][j]=M;
			}
		}
		int a,b,c;
		while(t--)
		{
			scanf("%d%d%d",&a,&b,&c);
			if(cdist[k]+map[k][j])
			{
				dist[j]=map[k][j]+dist[k];
			}
		}
	}
}
【别人的代码】
将草儿的家看做点0,从草儿家到相邻镇的花费的时间为0
那么我们就只需要求草儿家到各个目的地的最短路即可,一次Dijkstra便可解决
#include 
#include 
#include 
using namespace std;
const int inf = 1<<30;
 
int T,S,D,n;
int map[1111][1111];
int vis[1111],cast[1111];
int s[1111],e[1111];
 
void Dijkstra()
{
    int i,j,minn,pos;
    memset(vis,0,sizeof(vis));
    vis[0] = 1;
    for(i = 0; i<=n; i++)
        cast[i] = map[0][i];
    for(i = 1; i<=n; i++)
    {
        minn = inf;
        for(j = 1; j<=n; j++)
        {
            if(cast[j]

 

你可能感兴趣的:(做题记录)