hdu 3832(最短路)
来源:互联网 发布:python def的作用 编辑:程序博客网 时间:2024/05/29 14:27
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3832
思路:三次spfa求出1,2,3到各点的最短距离,然后枚举中间点到这三点的最短距离之和为ans,最后就是n-ans-1了。
1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<algorithm> 5 #include<queue> 6 using namespace std; 7 #define MAXN 222 8 #define inf 1<<30 9 struct Node{10 int x,y,r;11 }node[MAXN];12 int n;13 int map[MAXN][MAXN];14 bool mark[MAXN];15 int dd1[MAXN];16 int dd2[MAXN];17 int dd3[MAXN];18 19 bool Judge(int i,int j){20 int xx=node[i].x-node[j].x;21 int yy=node[i].y-node[j].y;22 if(xx*xx+yy*yy<=(node[i].r+node[j].r)*(node[i].r+node[j].r))23 return true;24 return false;25 }26 27 void SPFA(int st,int dd[]){28 memset(mark,false,sizeof(mark));29 for(int i=1;i<=n;i++)dd[i]=inf;30 mark[st]=true;31 dd[st]=0;32 queue<int>Q;33 Q.push(st);34 while(!Q.empty()){35 int u=Q.front();36 Q.pop();37 mark[u]=false;38 for(int i=1;i<=n;i++){39 if(map[u][i]&&dd[i]>dd[u]+map[u][i]){40 dd[i]=dd[u]+map[u][i];41 if(!mark[i]){42 mark[i]=true;43 Q.push(i);44 }45 }46 }47 }48 }49 50 51 52 int main(){53 int _case;54 scanf("%d",&_case);55 while(_case--){56 scanf("%d",&n);57 for(int i=1;i<=n;i++){58 scanf("%d%d%d",&node[i].x,&node[i].y,&node[i].r);59 }60 memset(map,0,sizeof(map));61 for(int i=1;i<=n;i++){62 for(int j=i+1;j<=n;j++){63 if(Judge(i,j))map[i][j]=map[j][i]=1;64 }65 }66 SPFA(1,dd1);67 SPFA(2,dd2);68 SPFA(3,dd3);69 int ans=inf;70 for(int i=1;i<=n;i++){71 if(dd1[i]!=inf&&dd2[i]!=inf&&dd3[i]!=inf&&dd1[i]+dd2[i]+dd3[i]<ans){72 ans=dd1[i]+dd2[i]+dd3[i];73 }74 }75 if(ans<inf){76 printf("%d\n",n-ans-1);77 }else 78 puts("-1");79 }80 return 0;81 }
0 0
- hdu 3832(最短路)
- HDU 3832 Earth Hour(最短路)
- HDU 3832 Earth Hour (最短路)
- hdu 3832(最短路拆点)
- HDU 2544 最短路 (单源最短路)
- hdu 1874 (最短路)
- hdu 3499 (最短路)
- hdu 2851(最短路)
- hdu 1548(最短路)
- 最短路 (HDU 2544)
- HDU--2851(最短路)
- hdu 2544(最短路)
- hdu 1233(最短路)
- hdu 1546(最短路)
- hdu 3790(最短路)
- 最短路习题集(hdu)
- (HDU-2544)最短路
- 【HDU】-2544-最短路(最短路)(dijkstra)
- hdu 3535(背包综合题)
- hdu 1503(最长公共子序列的升级版)
- hdu 1300
- hdu 1422(环上最长连续子序列)
- hdu 4528(bfs)
- hdu 3832(最短路)
- hdu 3631(floyd思想的运用)
- hdu 3873(有节点保护的最短路)
- hdu 2648(map简单应用)
- 《学习opencv》笔记——基本数据结构,CvMat,矩阵访问
- hdu 4034(floyd应用)
- hdu 3560(dfs判环)
- hdu 4293
- hdu 2608(找规律)