讨论 / 【读题要仔细—oh yeah】
Paul_Guderian 2016-10-30 02:05:10
点我顶贴 收藏 删除
#include<stdio.h>

#include<string.h>

#include<math.h>

#include<iostream>

#include<queue>

#define go(i,a,b) for(int i=a;i<=b;i++)

#define inf 0x3f3f3f3f

using namespace std;

int x[102],y[102],n,speed,k=1,head[102];

bool inq[102];

double d[102];

struct node

{

——int v,next;

——double w;

}e[204];

void ADD(int u,int v,double w)

{

——e[k].v=v;

——e[k].w=w;

——e[k].next=head[u];

——head[u]=k++;

}

int main()

{

——scanf("%d%d",&n,&speed);

——int fa;

——go(i,1,n)

——{

————scanf("%d%d%d",&x[i],&y[i],&fa);

————int p=x[i]-x[fa],q=y[i]-y[fa];

————double num=sqrt(p*p+q*q)/(speed+0.0);

————ADD(i,fa,num);ADD(fa,i,num);

——}

——go(i,1,n)go(j,1,n)

——{

————if(x[i]==x[j]&&y[i]>y[j])

————ADD(i,j,sqrt((y[i]-y[j])*2/10.0));

——}

——go(i,1,101)d[i]=2147483647;

——d[1]=0;

——queue <int > q;

——q.push(1);

——inq[1]=1;

——while(!q.empty())

——{

————int x=q.front();

————q.pop();

————inq[x]=0;

————for(int i=head[x];i!=0;i=e[i].next)

————{

——————double ww=e[i].w;

——————int vv=e[i].v;

——————if(d[x]<inf&&d[vv]>d[x]+ww)

——————{

————————d[vv]=d[x]+ww;

————————if(!inq[vv])

————————{

——————————q.push(vv);

——————————inq[vv]=1;

————————}

——————}

————}

——}

——printf("%.2lf",d[n]);

——return 0;

}

#1 yellow_mt@2023-07-03 05:17:07
回复 删除
不会

空格

吗?

#2 yellow_mt@2023-07-03 05:17:36
回复 删除

??

查看更多回复
提交回复