zoukankan      html  css  js  c++  java
  • pku 3268 Silver Cow Party

    嘿嘿,跟pku 1151 差不多,都是单源最短路,这次求的是每个点往返最短时间中的最大值,就是先按pku1151一样,求往返俩次的最短路,再求出最大值即可

    代码基本没怎么改

    #include <iostream>
    #include<string>
    #include<stdlib.h>
    using namespace std;
    const int MAX = 1010;
    const int inf = INT_MAX;
    int N,m,n,num,s;
    typedef struct vol
    {
    	int w,//当前位置
    		v,//价值 value
    		next;//下一结点的位置
    } Voll;
    Voll peo[MAX*200];
    bool vis[MAX];
    int start1[MAX], start2[MAX];
    int stack[MAX];  
    int dis1[MAX],dis2[MAX];   // dis[i] 从1即到i当前最短路
    void SPFA( int startt[],int dis[])
    {
    
    	int i,top=0,temp;
    	temp = s;
    	for(i=0;i<n+1;i++)
    	{
    		dis[i] = inf;
    	}
    	memset(vis,false,sizeof(vis));
    	dis[temp] = 0;
    	stack[++top] = temp;
    	vis[temp]=true;
    	while(top)
    	{
    		temp =stack[top--];vis[temp]=false;
    		for(i=startt[temp]; i!=-1; i=peo[i].next)
    		{
    			if(peo[i].v + dis[temp] < dis[peo[i].w])
    			{
    				dis[peo[i].w] = peo[i].v + dis[temp];
    				if(!vis[peo[i].w])
    				{
    					vis[peo[i].w]=true;
    				 stack[++top] = peo[i].w;
    				}
    			}
    		}
    	}
    }
    
    void init()
    {
    	int i,x,y,v;
    	num=0;
        memset(start1,-1,sizeof(start1));
    	memset(start2,-1,sizeof(start2));
    	for(i=0;i<m;i++)
    	{
    		scanf("%d %d %d",&x,&y,&v);
    		peo[num].w = y;
    		peo[num].v = v;
    		peo[num].next = start1[x];   //保存邻接表串的始端位置,逆向实现相当给力!!!
    		start1[x] = num++;			   
    		///反向
    		peo[num].w = x;
    		peo[num].v = v;
    		peo[num].next = start2[y];
    		start2[y] = num++;
    	}
    }
    int main()
    {
    	while(	scanf("%d %d %d", &n, &m,&s)==3)
    	{
    		init();	
    		SPFA(start1,dis1) ;
    		SPFA(start2,dis2);
    		int max1=-inf;
    		for(int i=1;i<n+1;i++)
    		{
    			if(dis1[i]+dis2[i]>max1)
    				max1=dis1[i]+dis2[i];
    		}
    		cout<<max1<<endl;
    	}
    	return 0;
    }
    
  • 相关阅读:
    pip遇见的format问题
    opencv配置
    WPF学习笔记2
    WPF笔记1 用VS2015创建WPF程序
    C#基础知识
    电脑中毒了。
    感觉又学到了不少,在这里写下来,但也有一个问题,不知道是为甚吗?
    通过对HTML有一定的了解后,现在我开始学HTML DOM了。
    此情可待成追忆,只是当时已惘然。
    常用PS快捷键
  • 原文地址:https://www.cnblogs.com/nanke/p/2138632.html
Copyright © 2011-2022 走看看