• 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;
    }
    
  • 相关阅读:
    jquery 获取各种屏幕的宽度和高度
    我相信 Kenny
    C# 预览和打印出来的位置不符的问题 Kenny
    地址,数据位的一些理解:战舰板子
    OLED显示并口方式:
    __attribute__机制介绍
    大端模式 & 小端模式
    OV7670:
    STM32 Program Size: Code=29578 ROdata=4010 RWdata=488 ZIdata=1856
    DS18B20实验:神舟IV
  • 原文地址:https://www.cnblogs.com/nanke/p/2138632.html
Copyright © 2020-2023  润新知