| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
没过的试一试c++,真是服了 c++就过了 g++就过不了#include<cstdio>
#include<iostream>
#include<algorithm>
#include<queue>
#include<stack>
#include<cstring>
#include<string>
#include<vector>
#include<cmath>
#include<map>
using namespace std;
typedef long long ll;
#define mem(a,b) memset(a,b,sizeof(a))
const int maxn = 1e5+5;
const int ff = 0x3f3f3f3f;
int sx,sy,ex,ey;
long long temp[205][2];
double mp[205][205];
double dis[205];
int vis[205];
int cnt = 2;
void solve()
{
for(int i = 1;i<= cnt;i++)
dis[i] = mp[1][i];
vis[1] = 0;
dis[1] = 0;
int num = 1;
while(num<= cnt)
{
double min_d = 9999999999999;
int min_v;
for(int i = 1;i<= cnt;i++)
{
if(!vis[i]&&dis[i]< min_d)
min_d = dis[i],min_v = i;
}
vis[min_v] = 1;
num++;
if(min_v == 2)
break;
for(int i = 1;i<= cnt;i++)
{
if(!vis[i]&&min_d+mp[min_v][i]< dis[i])
{
dis[i] = min_d+mp[min_v][i];
}
}
}
double ans = dis[2]*60;
printf("%.0lf\n",ans);
}
int main()
{
mem(vis,0);
scanf("%I64d %I64d %I64d %I64d",&temp[1][0],&temp[1][1],&temp[2][0],&temp[2][1]);
int t[202][2];
ll x,y;
int l,r;
int flag = 0;
while(scanf("%I64d %I64d",&x,&y)!= EOF)
{
if(x == -1&&y == -1)
{
for(int i = l;i< r;i++)
{
for(int j = i+1;j<= r;j++)
{
double sum = 0;
for(int k = i;k< j;k++)
sum+= sqrt((double)(temp[k][0]-temp[k+1][0])*(double)(temp[k][0]-temp[k+1][0])+(double)(temp[k][1]-temp[k+1][1])*(double)(temp[k][1]-temp[k+1][1]))/(40000*1.0);
mp[i][j] = sum;
mp[j][i] = sum;
}
}
flag = 0;
continue;
}
temp[++cnt][0] = x;
temp[cnt][1] = y;
if(flag == 0)
{
flag = 1;
l = cnt;
}
r = cnt;
}
for(int i = 1;i< cnt;i++)
{
for(int j = i+1;j<= cnt;j++)
{
if(mp[i][j]!= 0)
{
mp[i][j] = min(mp[i][j],sqrt((double)(temp[i][0]-temp[j][0])*(double)(temp[i][0]-temp[j][0])+(double)(temp[i][1]-temp[j][1])*(double)(temp[i][1]-temp[j][1]))/(10000*1.0));
mp[j][i] = mp[i][j];
continue;
}
mp[i][j] = sqrt((double)(temp[i][0]-temp[j][0])*(double)(temp[i][0]-temp[j][0])+(double)(temp[i][1]-temp[j][1])*(double)(temp[i][1]-temp[j][1]))/(10000*1.0);
mp[j][i] = mp[i][j];
}
}
solve();
return 0;
}
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator