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