其实就是一道最小生成树的题目.我们只需要将坏点排除在外,然后对其它点做一次最小生成树,然后在将坏点连接到这颗生成树上(每次都选代价最小的点).当然如果最后不是所有的点都连接到一起,就是impossible了.
还有一种情况需要特判,就是如果一共只有两个点,并且都是坏点,这种情况也是合法的.

代码如下:

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<vector>
using namespace std;#define maxn 210000
#define ll long long
#define INF 0x3f3f3f3fvector<int>g[maxn],w[maxn];typedef struct
{int x,y,w;
}P;
P p[maxn];int cmp(P p1,P p2)
{return p1.w<p2.w;
}int e,fa[maxn];
int a[maxn],flag[maxn];int Find(int x)
{return fa[x]==x?x:Find(fa[x]);
}///如果只有两个点,且全部是坏点则要特判
int main()
{int n,m,k;// freopen("in.txt","r",stdin);while(scanf("%d%d%d",&n,&m,&k)!=EOF){int h;memset(flag,0,sizeof(flag));for(int i=1;i<=n;i++)fa[i]=i;for(int i=1;i<=n;i++)g[i].clear(),w[i].clear();for(int i=0;i<k;i++){scanf("%d",&a[i]);flag[a[i]]=1;}e=0;for(int i=1;i<=m;i++){int x,y,z;scanf("%d%d%d",&x,&y,&z);if(k==2&&x==a[0]&&y==a[1]) h=z;if(k==2&&y==a[0]&&x==a[1]) h=z;p[e].x=x; p[e].y=y; p[e].w=z; e++;p[e].x=y; p[e].y=x; p[e].w=z; e++;g[x].push_back(y); w[x].push_back(z);g[y].push_back(x); w[y].push_back(z);}if(n==2&&k==2){printf("%d\n",h);continue;}sort(p,p+e,cmp);int cnt=1;bool bl=true;ll ans=0;for(int i=0;i<e;i++){int x=p[i].x,y=p[i].y;if(!flag[x]&&!flag[y]){int xx=Find(x);int yy=Find(y);if(xx!=yy){ans+=p[i].w; cnt++;fa[xx]=yy;}}}if(cnt<n-k)  bl=false;int sum1=0,sum2=0;for(int i=0;i<k;i++){int x=a[i],y,tmp=INF;for(int j=0;j<g[x].size();j++){y=g[x][j];if(flag[y])continue;if(tmp>w[x][j])tmp=w[x][j];}if(tmp<INF)ans+=tmp,cnt++;}if(cnt<n) bl=false;if(!bl)printf("impossible\n");elseprintf("%lld\n",ans);}return 0;
}

CSUOJ--1633 Landline Telephone Network相关推荐

  1. 湖南多校对抗5.24

    据说A,B,C题都比较水这里就不放代码了 D:Facility Locations 然而D题是一个脑经急转弯的题:有m行,n列,每个位置有可能为0,也可能不为0,问最多选K行是不是可以使得每一列都至少 ...

  2. 网络系统结构和设计的基本规则(Basic rules for network system architecture and design)

    网络系统结构和设计的基本规则(Basic rules for network system architecture and design) PSTN ( Public Switched Teleph ...

  3. CAN201-Computer Network(1)

    文章目录 1. Introduction 1.1 Different ways to access internet 1.2 How to link with others 1.3 Network P ...

  4. mts模式_MTS的完整形式是什么?

    mts模式 MTS:Microsoft Transaction Server /移动电话服务/多通道电视声音 (MTS: Microsoft Transaction Server/ Mobile Te ...

  5. 从SS7到VOIP sip

    对于VoIP,我想这是通信行业的一个趋势,趋势比技术更重要. 在VOIP中,SIP协议越来越火,那么对这个的研究也就越来越多,每天看一点书,写一点东西,总结一些知识,对我们的工作还是有帮助的.每天进步 ...

  6. 如何使用iPhone进行电话会议

    Your iPhone allows you to call up to five people at once, making it easy to set up a quick conferenc ...

  7. VOICE VOER IP(VoIP)理论(NP水平学的)

    VOICE VOER IP:承载在IP数据包中的语音信息 分组电话网络的优点: Mor efficient use of bandwidth and equipment Lower transmiss ...

  8. 网络工程师常用英文简写

    DARPA :国防高级研究计划局 ARPARNET(Internet) :阿帕网 ICCC :国际计算机通信会议 CCITT :国际电报电话咨询委员会 SNA :系统网络体系结构(IBM) DNA : ...

  9. Android IOS WebRTC 音视频开发总结(十)-- webrtc入门002

    继续上一篇中未翻译完成的部分,主要包括下面三个部分: 1,扩展:WebRTC多方通话. 2,MCU Multipoint Control Unit. 2, 扩展:VOIP,电话,消息通讯. 注意:翻译 ...

最新文章

  1. Ubuntu双击运行Shell脚本
  2. endnote修改正文中参考文献标注_请问endnote里,如何把正文中插入参考文献处的格式由数字转为(作者,年份)?感恩!...
  3. mysql 驱动名称_mysql驱动名更新
  4. web.config 测试账号
  5. 未能加载文件或程序集“XXX”或它的某一个依赖项。试图加载格式不正确的程序。...
  6. Angr安装与使用之使用篇(七)
  7. 整理了20个数据可视化大屏,源码限时领取!
  8. java在线校验银行卡号_校验银行卡卡号
  9. 嗯,我是一个偏执狂。
  10. 如何编写一份完整的软件测试报告?(进阶版)
  11. 为每天节省两小时-华芸AS4004T万兆NAS搭建测试
  12. [转]的C#实现三维数字地形漫游(基于Irrlicht)
  13. xposed模块编写教程_Xposed插件开发入门详解,
  14. 91.【SpringBoot-03】
  15. processing制作动态山水背景
  16. Knald - 1.2.1 烘培贴图,利用贴图转换成其他贴图   笔记
  17. win7重装mysql_win7(64位)彻底卸载mysql,重装不再烦恼
  18. 你想要的Window、Office办公快捷键都在这
  19. 复杂网络之社区发现算法
  20. 在kibana中查询elasticsearch数据的方法(lucene和kql语法)

热门文章

  1. Unity Shaders and Effects Cookbook (2-7)实现 Photoshop 色阶效果
  2. 今天遇到一个报错信息
  3. 使用Domain Adaption提升小场景时间序列预测效果的方法
  4. FMCW雷达动作原理
  5. 扫描建模在三维建模中有多厉害?
  6. SQL Server 沿用上一日的数据
  7. 北邮智能车仿真培训(九)—— 室外光电创意组仿真
  8. 蘑菇管理定律,虽可恨,但合理
  9. mysql 1593_Linux高可用(HA)之MySQL主从复制中出现1593错误码的低级错误
  10. 2020 CM-BERT: Cross-Modal BERT for Text-Audio Sentiment Analysis