• poj 3767 I Wanna Go Home


    题目分析:

                 这个题属于典型的dijkstra 算法的题;

                 n个村庄,m 条路 和两村庄之间所用时间

                  最后是各个城市所属阵营;

    题意分析:       

                  分为两个阵营,1,2城市分别属于1,2阵营(题意简单化题目)求从城市1到城市2 的最短时间

    重点:

                可以从城市1到2,反则不行:因此,在这加上判断条件,套用dijkstra算法就ok了

    #include<stdio.h>
    
    #define max 0x7fffffff
    
    int grah[601][601];
    
    int root[601];
    
    int n;
    
    void dij()
    
    {
    
    	int d[601];
    
        bool vis[601]={false};   
    
    	int i,j,pos=0;
    
    	for(i = 0;i < n; i++)
    
    		d[i] = grah[0][i];
    
    	vis[0] = true ;
    
    	for( i= 1; i <= n; i++)
    
    	{
    
    		int min=max;
    
    
    
    		for(j = 0; j < n; j++)
    
    		{
    
    			if( ! vis[j] && min > d[j])
    
    			
    
    			{
    
    				
    
    			    min=d[j];
    
    				pos = j;
    
    			}
    
    		}
    
    		vis[pos] = true;
    
    		for( j = 0;j < n ;j++)
    
    		{
    
    			if( !vis[j] && grah[pos][j] < max && !(root[pos] == 2 && root[j] == 1))
    
    			{
    
    				if(d[j] > d[pos]+ grah[pos][j])
    
    					d[j] = d[pos] + grah[pos][j];
    
    			}
    
    		}
    
    		
    
    	}
    
    	    if(d[1] < max) printf("%d\n",d[1]);
    
    		else  printf("-1\n");
    
    }
    
    int main()
    
    {
    
    //	freopen("e://1.txt","r",stdin);
    
    	int m,x,y,z,i,j;
    
    	while(scanf("%d",&n),n)
    
    	{
    
    		for(i = 0;i < n;i++)
    
    			for(j = 0;j < n;j++)
    
    			{
    
    				if(i==j) grah[i][j]=0;
    
    				else grah[i][j]=max;
    
    			}
    
    		scanf("%d",&m);
    
    		while(m--)
    
    		{
    
    			scanf("%d%d%d",&x,&y,&z);
    
    			grah[x-1][y-1]=grah[y-1][x-1]=z;
    
    		}
    
    		for(i = 0;i < n;i++)
    
    			scanf("%d",root+i);
    
             dij();
    
    	}
    
      return 0;
    
    }
    

      

  • 相关阅读:
    Java web 例4-7
    JavaScript初步+基本函数
    请求转发和重定向区别
    javaben的设计规则
    Java web 实验五 Servlet过滤器
    关于软件生命周期以及软件过程
    Java web outTime.jsp
    Java web 4-6 update_stu_1.jps
    include指令与动作,请求妆发等同于forward动作
    简单的购物车应用案例 相关代码2
  • 原文地址:https://www.cnblogs.com/skyming/p/2141321.html
Copyright © 2020-2023  润新知