zoukankan      html  css  js  c++  java
  • 浙大计算机研究生复试上机考试2010年----最短路径问题

    这道题是增加了一个花费的数据。。不过也不是大问题。。

    不过最大问题是、这题的最坑爹之处。默认的测试数据里包含两个城市间有多条路径的情况。啊啊啊。。

    这TM的研究生复试上机考试,会坑死一群奋斗了一年的倒霉的孩纸额。。。

    #include <iostream>
    using namespace std;
    const int INF=0x3f3f3f3f;
    const int MAXV=1005;
    struct vertex
    {
    	int d;
    	int p;
    };
    vertex cost[MAXV][MAXV];
    vertex operator+(const vertex&a,const vertex&b)
    {
    	vertex c;
    	c.d=a.d+b.d;
    	c.p=a.p+b.p;
    	return c;
    }
    void Dijkstra(int n,int v,int t)
    {
    	vertex dist[MAXV];
    	bool s[MAXV];
    	for(int i=1;i<=n;i++)
    	{
    		dist[i]=cost[v][i];
    		s[i]=0;
    	}
    	s[v]=1;
    	int k;
    	for(int i=1;i<=n;i++)
    	{
    		int min=INF;
    		for(int j=1;j<=n;j++)
    		{
    			if(s[j]==0&&dist[j].d<min)
    			{
    				k=j;
    				min=dist[j].d;
    			}
    		}
    		s[k]=1;
    		for(int j=1;j<=n;j++)
    		{
    			if(s[j]==0)
    			{
    				if(cost[k][j].d<INF&&dist[k].d+cost[k][j].d<dist[j].d)
    					dist[j]=dist[k]+cost[k][j];
    				else if(dist[k].d+cost[k][j].d==dist[j].d)
    					if(dist[k].p+cost[k][j].p<dist[j].p)
    						dist[j].p=dist[k].p+cost[k][j].p;
    			}
    		}
    	}
    	printf("%d %d
    ",dist[t].d,dist[t].p);
    }
    int main()
    {
    
    	int n,m;
    	while(scanf("%d%d",&n,&m))
    	{
    		if(n==0&&m==0)
    			break;
    		for(int i=1;i<=n;i++)
    		{
    			for(int j=1;j<=n;j++)
    			{
    				cost[i][j].d=cost[i][j].p=INF;
    			}
    		}
    		int a,b,d,p;
    		while(m--)
    		{
    			scanf("%d%d%d%d",&a,&b,&d,&p);
    			if(cost[a][b].d!=INF&&cost[a][b].d>d)
    			{
    				cost[a][b].d=cost[b][a].d=d;
    				cost[a][b].p=cost[b][a].p=p;
    			}
    			else if(cost[a][b].d==INF)
    			{
    				cost[a][b].d=cost[b][a].d=d;
    				cost[a][b].p=cost[b][a].p=p;
    			}
    		}
    		int v,t;
    		scanf("%d%d",&v,&t);
    		Dijkstra(n,v,t);
    	}
    	return 0;
    }


  • 相关阅读:
    hibernate 总结
    事物随笔
    添加收藏夹的作法
    jquery uploadify多文件上传
    过滤器与拦截器的区别
    网站首页添加缓存--------ehcache的简单使用
    DWR 在项目中的应用
    分页标签:pager-taglib的使用
    关闭iptables(Centos)
    Centos移除图形界面
  • 原文地址:https://www.cnblogs.com/unclejelly/p/4082138.html
Copyright © 2011-2022 走看看