zoukankan      html  css  js  c++  java
  • hdu 3790 最短路径问题

    点击打开链接

    结构体形式的Dijkstra

    注意,费用和总路程都要处理,总路程为先!

    #include"stdio.h"
    #include"string.h"
    #define INF 999999
    struct node
    {
    	int dis,cost;
    }map[1001][1001],f[1001];
    int n,m,s,e;
    int mark[1001];
    void dijkstra()
    {
    	int i,j,k,min;
    	memset(mark,0,sizeof(mark));
    	for(i=1;i<=n;i++)
    	{
    		f[i].dis=map[s][i].dis;
    		f[i].cost=map[s][i].cost;
    	}
    	mark[s]=0;f[s].cost=0;f[s].dis=0;
    	for(i=1;i<=n;i++)
    	{
    		min=INF;
    		for(j=1;j<=n;j++)
    		{
    			if(!mark[j]&&f[j].dis<min)
    			{
    				min=f[j].dis;k=j;
    			}
    		}
    		if(min==INF)break;
    		mark[k]=1;
    		for(j=1;j<=n;j++)
    		{
    			if(!mark[j])
    			{
    				if(f[j].dis>f[k].dis+map[k][j].dis&&map[k][j].dis!=INF)
    				{
    					f[j].dis=f[k].dis+map[k][j].dis;
    					f[j].cost=f[k].cost+map[k][j].cost;
    				}
    				else if(f[j].dis==f[k].dis+map[k][j].dis&&map[k][j].dis!=INF)
    				{
    					if(f[j].cost>f[k].cost+map[k][j].cost)
    						f[j].cost=f[k].cost+map[k][j].cost;
    				}
    			}
    		}
    	}
    }
    int main()
    {
    	int i,j,a,b,d,p;
    	while(scanf("%d%d",&n,&m)!=EOF,n+m)
    	{
    		for(i=1;i<=n;i++)
    		{
    			for(j=1;j<=n;j++)
    			{
    				if(i==j)
    					map[i][j].cost=map[i][j].dis=0;
    				else
    					map[i][j].cost=map[i][j].dis=INF;
    			}
    		}
    		for(i=0;i<m;i++)
    		{
    			scanf("%d%d%d%d",&a,&b,&d,&p);
    			if(map[a][b].dis>d)
    			{
    				map[a][b].dis=map[b][a].dis=d;
    				map[a][b].cost=map[b][a].cost=p;
    			}
    		}
    		scanf("%d%d",&s,&e);
    		dijkstra();
    		printf("%d %d\n",f[e].dis,f[e].cost);
    	}
    	return 0;
    }
    
    


  • 相关阅读:
    Array总结
    js 添加收藏
    js 浮点数
    chrome 不支持 input file cursor:pointer
    nginx proxy_set_header设置、自定义header
    docker常用命令
    ssh登录问题解决
    android10 搜索不到ble设备的问题解决
    go语言接口型函数使用
    树莓派gpio驱动
  • 原文地址:https://www.cnblogs.com/yyf573462811/p/6365387.html
Copyright © 2011-2022 走看看