結果

問題 No.94 圏外です。(EASY)
ユーザー kmjp
提出日時 2014-12-07 19:34:13
言語 C++11
(gcc 4.8.5)
結果
AC  
実行時間 15 ms
コード長 1,593 Byte
コンパイル時間 993 ms
使用メモリ 1,600 KB
最終ジャッジ日時 2019-06-26 23:55:27

テストケース

テストケース表示
入力 結果 実行時間
使用メモリ
01.txt AC 3 ms
1,588 KB
02.txt AC 3 ms
1,588 KB
03.txt AC 2 ms
1,592 KB
04.txt AC 2 ms
1,580 KB
05.txt AC 3 ms
1,592 KB
06.txt AC 3 ms
1,596 KB
07.txt AC 2 ms
1,600 KB
08.txt AC 4 ms
1,596 KB
09.txt AC 7 ms
1,596 KB
10.txt AC 9 ms
1,596 KB
11.txt AC 9 ms
1,600 KB
12.txt AC 9 ms
1,596 KB
13.txt AC 10 ms
1,600 KB
14.txt AC 9 ms
1,600 KB
15.txt AC 10 ms
1,596 KB
16.txt AC 9 ms
1,596 KB
17.txt AC 9 ms
1,596 KB
18.txt AC 9 ms
1,600 KB
19.txt AC 9 ms
1,596 KB
20.txt AC 15 ms
1,600 KB
99_system_test1.txt AC 3 ms
1,584 KB
system_test1.txt AC 2 ms
1,588 KB
テストケース一括ダウンロード

ソースコード

diff #
#include <bits/stdc++.h>
using namespace std;
typedef signed long long ll;

#undef _P
#define _P(...) (void)printf(__VA_ARGS__)
#define FOR(x,to) for(x=0;x<to;x++)
#define ITR(x,c) for(__typeof(c.begin()) x=c.begin();x!=c.end();x++)
#define ALL(a) (a.begin()),(a.end())
#define ZERO(a) memset(a,0,sizeof(a))
#define MINUS(a) memset(a,0xff,sizeof(a))
//-------------------------------------------------------

class UF {
	public:
	static const int ufmax=1052;
	int ufpar[ufmax],ufrank[ufmax],ufcnt[ufmax];
	UF() { init();}
	void init(){int i; FOR(i,ufmax) { ufpar[i]=i; ufrank[i]=0; ufcnt[i]=1; } }
	int find(int x) {	return (ufpar[x]==x)?(x):(ufpar[x] = find(ufpar[x]));}
	int operator[](int x) {return find(x);}
	int count(int x) {return ufcnt[find(x)];}
	void unite(int x,int y) {
		x = find(x); y = find(y);
		if(x==y) return;
		if(ufrank[x]<ufrank[y]) ufpar[x]=y, ufcnt[y]+=ufcnt[x];
		else {ufpar[y]=x; ufcnt[x]+=ufcnt[y]; if(ufrank[x]==ufrank[y]) ufrank[x]++;}
	}
};

int N;
int X[1001],Y[1001];
UF uf;

void solve() {
	int i,j,k,l,r,x,y; string s;
	
	cin>>N;
	FOR(i,N) cin>>X[i]>>Y[i];
	FOR(x,N) FOR(y,N) if((X[x]-X[y])*(X[x]-X[y])+(Y[x]-Y[y])*(Y[x]-Y[y])<=100) uf.unite(x,y);
	double ma=1;
	if(N>0) ma=2;
	FOR(x,N) FOR(y,N) if(uf[x]==uf[y]) ma=max(ma,2+sqrt((X[x]-X[y])*(X[x]-X[y])+(Y[x]-Y[y])*(Y[x]-Y[y])));
	_P("%.12lf\n",ma);
}


int main(int argc,char** argv){
	string s;int i;
	if(argc==1) ios::sync_with_stdio(false);
	FOR(i,argc-1) s+=argv[i+1],s+='\n';
	FOR(i,s.size()) ungetc(s[s.size()-1-i],stdin);
	solve(); return 0;
}
0