HDU 4435 charge-station(天津现场赛)
2012-11-05 15:40
375 查看
比赛的时候没有做出来,没有想到解法啊,,回来之后。侯哥提醒一下。明白了。。Orz。。。
#include <cstdio> #include <cstring> #include <cmath> #include <algorithm> #include <iostream> #include <queue> #include <stack> using namespace std; int n,d; const int N = 159; struct cpoint{ int x,y; void get() { scanf("%d%d",&x,&y); } } re ; int getdis(int i,int j) { int t = (re[i].x-re[j].x)*(re[i].x-re[j].x)+(re[i].y-re[j].y)*(re[i].y-re[j].y); int k = (int)(sqrt(t*1.0)); if(k*k==t) return k; return k+1; } int dis ; bool ans ; queue<int> que; bool v ; bool ok() { memset(v,0,sizeof(v)); while(!que.empty()) que.pop(); que.push(0); v[0] = true; while(!que.empty()) { int e = que.front();que.pop(); for(int i=1;i<n;i++) if(!v[i]&&ans[i]&&dis[e][i]<=d) { v[i] =true; que.push(i); }else if(!v[i]&&dis[e][i]<=(d>>1)) { v[i] = true; //que.push(i); } } for(int i=0;i<n;i++) if(!v[i]) return false; return true; } void solve() { memset(ans,true,sizeof(ans)); if(!ok()) { printf("-1\n"); return ; } for(int i=n-1;i>0;i--) { ans[i] = 0; if(!ok()) { ans[i] = 1; } } int tmp ,cnt=0,f=0; for(int i=n-1;i>=0;i--) { if(ans[i]) tmp[cnt++] = 1,f=1; else if(f) tmp[cnt++] = 0; } for(int i=0;i<cnt;i++) printf("%d",tmp[i]); printf("\n"); } int main() { freopen("in.txt","r",stdin); while(~scanf("%d%d",&n,&d)) { for(int i=0;i<n;i++) re[i].get(); for(int i=0;i<n;i++) { dis[i][i] = 0; for(int j=i+1;j<n;j++) dis[i][j] = dis[j][i] = getdis(i,j); } solve(); } return 0; }
相关文章推荐
- HDU 4435 charge-station (2012年天津赛区现场赛E题)
- HDU 4435 charge-station(12年天津)
- HDU 4435 charge-station(12天津E题)#by zh
- hdu 4435 第37届ACM/ICPC天津现场赛E题
- hdu 4435 charge-station(几何+bfs)
- hdu 4435(第37届ACM/ICPC天津赛区现场赛E题)
- HDU 4435 charge-station bfs图论问题
- HDU-4435-charge-station ( 2012 Asia Tianjin Regional Contest )
- HDU 4435(charge-station)(BFS+最小花费)
- HDU 4435 charge-station () bfs图论问题
- hdu 4435 charge-station【暴力+Bfs】
- hdu 4435 charge-station
- hdu 4435 charge-station
- hdu 4435 2012天津现场赛
- Hdu 4435 charge-station 贪心
- hdu(4435)天津现场赛
- Hdu 4435 charge-station(BFS+贪心)
- hdu 4435 charge-station
- HDU 4435 charge-station
- HDU 4435 charge-station (并查集)