洛谷P1991 无线通讯网【最小生成树】
题目:https://www.luogu.org/problemnew/show/P1991
题意:有p个点的坐标,可以有s个点使得这s个点之间可以无限制通信。
要使所有点之间两两有通信的路径(可以是间接的),其中最长的一段通信路径是多长。
思路:最近都不好好看题。上一题没看清-1,这一题没看清精确到小数点两位,在干吗啊。
首先建图,然后找最小生成树里第p-s大的路径长度。
1 #include<cstdio> 2 #include<cstdlib> 3 #include<map> 4 #include<set> 5 #include<cstring> 6 #include<algorithm> 7 #include<vector> 8 #include<cmath> 9 #include<stack> 10 #include<queue> 11 #include<iostream> 12 13 #define inf 0x3f3f3f3f 14 using namespace std; 15 typedef long long LL; 16 typedef pair<int, int> pr; 17 18 int s, n; 19 const int maxn = 505; 20 struct node{ 21 int x, y; 22 }nodes[maxn]; 23 double g[maxn][maxn]; 24 25 double dist(int i, int j) 26 { 27 return sqrt((nodes[i].x - nodes[j].x) * (nodes[i].x - nodes[j].x) + (nodes[i].y - nodes[j].y) * (nodes[i].y - nodes[j].y)); 28 } 29 30 bool vis[maxn]; 31 double d[maxn]; 32 vector<double>ans; 33 void prim(int x) 34 { 35 memset(d, 0x3f, sizeof(d)); 36 d[x] = 0; 37 vis[x] = true; 38 for(int i = 1; i <= n; i++){ 39 d[i] = g[x][i]; 40 } 41 42 for(int t = 1; t < n; t++){ 43 double min = inf; 44 int minid; 45 for(int i = 1; i <= n; i++){ 46 if(!vis[i] && d[i] < min){ 47 min = d[i]; 48 minid = i; 49 } 50 } 51 vis[minid] = true; 52 ans.push_back(min); 53 for(int i = 1; i <= n; i++){ 54 if(d[i] > g[minid][i]){ 55 d[i] = g[minid][i]; 56 } 57 } 58 } 59 } 60 61 int main() 62 { 63 scanf("%d%d", &s, &n); 64 for(int i = 1; i <= n; i++){ 65 scanf("%d%d", &nodes[i].x, &nodes[i].y); 66 } 67 for(int i = 1; i <= n; i++){ 68 for(int j = i + 1; j <= n; j++){ 69 g[i][j] = g[j][i] = dist(i, j); 70 //printf("%lf\n", g[i][j]); 71 } 72 } 73 74 prim(1); 75 sort(ans.begin(), ans.end()); 76 printf("%.2lf\n", ans[n - s - 1]); 77 return 0; 78 }
分类:
图论---最小生成树
, OJ---洛谷
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 智能桌面机器人:用.NET IoT库控制舵机并多方法播放表情
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 手把手教你在本地部署DeepSeek R1,搭建web-ui ,建议收藏!
· 新年开篇:在本地部署DeepSeek大模型实现联网增强的AI应用
· Janus Pro:DeepSeek 开源革新,多模态 AI 的未来
· 互联网不景气了那就玩玩嵌入式吧,用纯.NET开发并制作一个智能桌面机器人(三):用.NET IoT库
· 【非技术】说说2024年我都干了些啥