zoukankan      html  css  js  c++  java
  • 【POJ3268】Silver Cow Party 最短

    意甲冠军:一群奶牛去的地方。去回,然后回去寻找最伟大值。

    题解:两遍最短路,结束。邻接矩阵存边能够避免建反图。

    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    #define N  1005
    #define inf 0x3f3f3f3f
    using namespace std;
    
    int map[N][N],n,m,s;
    int dist1[N],dist2[N];
    bool visit[N];
    void dij1()
    {
    	memset(dist1,0x3f,sizeof(dist1));
    	memset(visit,0,sizeof(visit));
    	int i,u,v,temp,round;
    	dist1[s]=0;
    	for(round=1;round<n;round++)
    	{
    		temp=inf;
    		for(i=1;i<=n;i++)
    		{
    			if(!visit[i]&&temp>dist1[i])
    			{
    				temp=dist1[i];
    				u=i;
    			}
    		}
    		visit[u]=1;
    		for(v=1;v<=n;v++)
    		{
    			dist1[v]=min(dist1[v],dist1[u]+map[u][v]);
    		}
    	}
    	return ;
    }
    void dij2()
    {
    	memset(dist2,0x3f,sizeof(dist2));
    	memset(visit,0,sizeof(visit));
    	int i,u,v,temp,round;
    	dist2[s]=0;
    	for(round=1;round<n;round++)
    	{
    		temp=inf;
    		for(i=1;i<=n;i++)
    		{
    			if(!visit[i]&&temp>dist2[i])
    			{
    				temp=dist2[i];
    				u=i;
    			}
    		}
    		visit[u]=1;
    		for(v=1;v<=n;v++)
    		{
    			dist2[v]=min(dist2[v],dist2[u]+map[v][u]);
    		}
    	}
    	return ;
    }
    
    int main()
    {
    //	freopen("test.in","r",stdin);
    	int i,a,b,c;
    	scanf("%d%d%d",&n,&m,&s);
    	memset(map,0x3f,sizeof(map));
    	for(i=1;i<=m;i++)
    	{
    		scanf("%d%d%d",&a,&b,&c);
    		map[a][b]=c;
    	}
    	dij1();
    	dij2();
    	int ans=0;
    	for(i=1;i<=n;i++)ans=max(ans,dist1[i]+dist2[i]);
    	printf("%d
    ",ans);
    	return 0;
    }
    


    版权声明:本文博客原创文章,博客,未经同意,不得转载。

  • 相关阅读:
    nginx访问控制
    nginx的请求限制
    nginx目录及配置语法
    安装Nginx
    Docker Service启动时挂载docker命令
    禁止flyme自动下载rom
    docker.service 修改指南
    debian 10.x (buster) 离线安装docker及卸载
    按照容器名称清除docker容器产生的日志文件内容
    debian修改系统语言为英文
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/4660890.html
Copyright © 2011-2022 走看看