2455 繁忙的都市
2018-06-17 22:49:56来源:未知 阅读 ()
城市C是一个非常繁忙的大都市,城市中的道路十分的拥挤,于是市长决定对其中的道路进行改造。城市C的道路是这样分布的:城市中有n个交叉路口,有些交叉路口之间有道路相连,两个交叉路口之间最多有一条道路相连接。这些道路是双向的,且把所有的交叉路口直接或间接的连接起来了。每条道路都有一个分值,分值越小表示这个道路越繁忙,越需要进行改造。但是市政府的资金有限,市长希望进行改造的道路越少越好,于是他提出下面的要求:
1. 改造的那些道路能够把所有的交叉路口直接或间接的连通起来。
2. 在满足要求1的情况下,改造的道路尽量少。
3. 在满足要求1、2的情况下,改造的那些道路中分值最大的道路分值尽量小。
任务:作为市规划局的你,应当作出最佳的决策,选择那些道路应当被修建。
第一行有两个整数n,m表示城市有n个交叉路口,m条道路。接下来m行是对每条道路的描述,u, v, c表示交叉路口u和v之间有道路相连,分值为c。(1≤n≤300,1≤c≤10000)
两个整数s, max,表示你选出了几条道路,分值最大的那条道路的分值是多少。
4 5
1 2 3
1 4 5
2 4 7
2 3 6
3 4 8
3 6
见题面
分类标签 Tags 点此展开、
直接上Kruskal暴力
1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<algorithm> 5 using namespace std; 6 struct node 7 { 8 int u; 9 int v; 10 int w; 11 }edge[1000001]; 12 int num=1; 13 int f[1000001]; 14 int find(int x) 15 { 16 if(x!=f[x]) 17 f[x]=find(f[x]); 18 return f[x]; 19 } 20 void unionn(int x,int y) 21 { 22 int fx=find(x); 23 int fy=find(y); 24 f[fx]=fy; 25 } 26 int cmp(const node &a,const node &b) 27 { 28 return a.w<b.w; 29 } 30 int main() 31 { 32 int n,m; 33 scanf("%d%d",&n,&m); 34 for(int i=1;i<=n;i++)f[i]=i; 35 for(int i=1;i<=m;i++) 36 { 37 int x,y,z; 38 scanf("%d%d%d",&x,&y,&z); 39 edge[num].u=x; 40 edge[num].v=y; 41 edge[num].w=z; 42 num++; 43 } 44 sort(edge+1,edge+num,cmp); 45 int k=0; 46 int maxn=-1; 47 for(int i=1;i<=m;i++) 48 { 49 if(find(edge[i].u)!=find(edge[i].v)) 50 { 51 if(edge[i].w>maxn) 52 maxn=edge[i].w; 53 k++; 54 unionn(edge[i].u,edge[i].v); 55 } 56 if(k==n-1)break; 57 } 58 printf("%d %d",n-1,maxn); 59 return 0; 60 }
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:1003 电话连线
- 神奇的decimal,也许面试会问到哦~ 2018-06-18
- 洛谷P2455 [SDOI2006]线性方程组(高斯消元) 2018-06-17
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash