結果
問題 |
No.168 ものさし
|
ユーザー |
![]() |
提出日時 | 2017-11-16 12:44:15 |
言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
結果 |
TLE
|
実行時間 | - |
コード長 | 905 bytes |
コンパイル時間 | 389 ms |
コンパイル使用メモリ | 58,044 KB |
実行使用メモリ | 24,700 KB |
最終ジャッジ日時 | 2024-11-25 06:21:55 |
合計ジャッジ時間 | 73,249 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | TLE * 4 |
other | TLE * 19 |
コンパイルメッセージ
main.cpp: In function ‘int main()’: main.cpp:35:17: warning: ‘idx’ may be used uninitialized in this function [-Wmaybe-uninitialized] 35 | visited[idx]=true; | ~~~~~~~~~~~~^~~~~
ソースコード
#include <iostream> #include <algorithm> using namespace std; typedef long long ll; #define INF 2000000000000000100 ll G[1000][1000];//点と点の距離 ll d[1000],x[1000],y[1000]; int n; bool visited[1000]; ll mysqrt(ll t){ ll a=0,b=1500000000; for(int i=0;i<100;++i){ ll r=(a+b+1)/2; if(r*r<=t) a=r; else b=r; } if(a*a==t) return (a+9)/10*10; return (b+9)/10*10; } int main(){ cin>>n; for(int i=0;i<n;++i) cin>>x[i]>>y[i]; for(int i=0;i<n;++i) for(int j=0;j<n;++j) G[i][j] = (x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j]); for(int i=1;i<n;++i) d[i]=INF; while(1){ int idx; ll m=INF; for(int i=0;i<n;++i){ if(m > d[i] && !visited[i]){ idx = i; m = d[i]; } } visited[idx]=true; for(int i=0;i<n;++i){ if(G[idx][i]!=0) d[i]=min(d[i],max(m,G[idx][i])); } } cout << mysqrt(d[n-1]) << endl; return 0; }