zoukankan      html  css  js  c++  java
  • POJ 2502

    题意: 走路10km/h 地铁40km/h 给了家 学校 和每个地铁站的坐标(都是正整数) 问从家到学校的最小时间

    思路: 恶心就恶心在建图上 事实上 把所有坐标都编号 家是1 学校是2 然后每个地铁站依次遍为3 4 5 .... 对所有点都有 如果是同一条地铁线上的点 那每两个相邻点的时间花费就是
    time = d / (40.0 * 1000.0 / 60.0) 否则 time=d / (10.0 * 1000.0 / 60.0) 用cnt去记录每一条线路

    #include<iostream>
    #include<cstdio>
    #include<algorithm>
    #include<cmath>
    #include<string.h>
    #include<queue>
    using namespace std;
    
    typedef long long ll;
    const int maxn=505;
    double mp[maxn][maxn],dis[maxn];
    int vis[maxn];
    int k=0;
    
    struct node{
    	int x,y;
    }e[maxn];
    double far(node a,node b)
    {
    	return sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));
    }
    
    void spfa()
    {
    	memset(vis,0,sizeof(vis));
    	memset(dis,0x42,sizeof(dis));
    	queue<int> q;
    	q.push(1);
    	vis[1]=1;
    	dis[1]=0;
    	while(!q.empty())
    	{
    		int u=q.front();
    		q.pop();
    		vis[u]=0;
    		for(int i=1;i<=k;i++)
    		{
    			double w=mp[u][i];
    			if(dis[i]>dis[u]+w)
    			{
    				dis[i]=dis[u]+w;
    				if(!vis[i])
    				{
    					q.push(i);
    					vis[i]=1;
    				}
    			}
    		}
    	}
    }
    
    int main()
    {
    	int cnt=3,x,y;	
    	memset(mp,0x42,sizeof(mp));
    	while(scanf("%d%d",&x,&y)!=EOF)
    	{
    		if(x==-1 && y==-1)
    		{
    			cnt=k+1;
    			continue;
    		}
    		else
    		{
    			e[++k]=(node){x,y};
    			for(int i=1;i<=k;i++)
    			{
    				double sum=far(e[k],e[i]);
    				if(i==k-1 && i>=cnt) sum/=(40.0*1000.0/60.0);
    				else sum/=(10.0*1000.0/60.0); 
    				mp[i][k]=mp[k][i]=min(sum,mp[k][i]);
    			}
    		}
    		
    	}
    	spfa();
    	printf("%d
    ",(int)floor(dis[2]+0.5));
    	return 0;
     } 
    
  • 相关阅读:
    platform_device和platform_driver
    理解和认识udev
    platform_device和platform_driver
    bzImage的概要生成过程
    shell 字符表
    分析mtk6516如何加入自己的驱动
    理解和使用Linux的硬件抽象层HAL
    bzImage的概要生成过程
    理解和认识udev
    shell 字符表
  • 原文地址:https://www.cnblogs.com/tianming1/p/13854514.html
Copyright © 2011-2022 走看看