1215. [Tyvj Aug11] 冗余电网

      ★   输入文件:ugrid.in   输出文件:ugrid.out   简单对比
          时间限制:1 s   内存限制:128 MB

TYVJ八月月赛提高组第2题
测试点数目:5
测试点分值:20
--内存限制:128M
--时间限制:1s

【题目描述】

北冰洋有一座孤岛,多年来一直没电。近日,令岛民们振奋的消息传来:S国的专家要为他们修建电网!!!
孤 岛上共有N个村庄,发电站要建在第K个村庄中。S国的专家要在N个村庄间修建M条输电线路,但由于地理原因,M条线路无法保证每个村庄都与第K个村庄(建 有发电站)直接相连,同样,也不一定能保证每个村庄都与第K个村庄间接相连(假设A与B直接相连,B与C直接相连,那么A与C间接相连)。
然而,由于S国的专家智商实在太“高”了,以至于设计出了许多冗余线路。现给出第i条线路两个端点Ui,Vi(分别表示线路连接的两个村庄,Ui!=Vi)和长度Li,请你帮岛民算一下:如果电网可以覆盖全岛,最少需要多长的电线;若不能,有多少个村庄无电可用。
注意:0<=冗余线路数目<m;部分数据有重边。电网可双向导电。

【输入格式】

第一行:N M K
接下来M行:Ui Vi Li
具体含义见题目描述

【输出格式】

如果电网可以覆盖全岛,输出最少需要的电线长度;
若不能,输出无电可用的村庄的个数。

【样例输入】

  1. 【样例1
  2. 5 5 1
  3. 1 2 1
  4. 2 3 1
  5. 3 4 1
  6. 4 5 1
  7. 5 1 1
  8.  
  9. 【样例2
  10. 5 5 1
  11. 1 2 1
  12. 1 2 2
  13. 1 2 3
  14. 3 4 1
  15. 5 4 2

【样例输出】

  1. 【样例1
  2. 4
  3.  
  4. 【样例2
  5. 3

【提示】

样例解释:
对于样例一,电网可以覆盖全岛,最短长度为4;
对于样例二,电网无法覆盖3,4,5这3个村庄。

数据范围:
对于20%的数据,有1<m,n<=10;
 对于60%的数据,有1<m,n<=1000;
 对于100%的数据,有1<m,n<=200000,0<li<=1e+7;
 对于40%的数据,电网无法覆盖全岛。

代码:

tarjan判断是否在同一个环里,爆栈、、、

  1. #include<cstdio>
  2. #include<cstdlib>
  3. #include<cstring>
  4. #include<iostream>
  5. #include<algorithm>
  6. #define N 2100000
  7. #define maxn 9999999
  8. using namespace std;
  9. bool vis[N];
  10. long long ans;
  11. int n,m,z,x,y,k,s,tot,sum,top,tim;
  12. int fa[N],dfn[N],low[N],head[N],stack[N],belong[N];
  13. int read()
  14. {
  15. ,f=; char ch=getchar();
  16. ; ch=getchar();}
  17. +ch-'; ch=getchar();}
  18. return x*f;
  19. }
  20. struct Edde
  21. {
  22. int x,y,z;
  23. }edde[N];
  24. struct Edge
  25. {
  26. int to,from,next;
  27. }edge[N<<];
  28. int add(int x,int y)
  29. {
  30. tot++;
  31. edge[tot].to=y;
  32. edge[tot].next=head[x];
  33. head[x]=tot;
  34. }
  35. int cmp(Edde a,Edde b)
  36. {
  37. return a.z<b.z;
  38. }
  39. int find(int x)
  40. {
  41. if(fa[x]==x) return x;
  42. fa[x]=find(fa[x]);
  43. return fa[x];
  44. }
  45. int tarjan(int now)
  46. {
  47. dfn[now]=low[now]=++tim;
  48. stack[++top]=now,vis[now]=true;
  49. for(int i=head[now];i;i=edge[i].next)
  50. {
  51. int t=edge[i].to;
  52. if(vis[t]) low[now]=min(low[now],dfn[t]);
  53. else if(!dfn[t]) tarjan(t),low[now]=min(low[now],low[t]);
  54. }
  55. if(low[now]==dfn[now])
  56. {
  57. s++;belong[now]=s;
  58. for(;stack[top]!=now;top--)
  59. {
  60. int x=stack[top];
  61. belong[x]=s,vis[x]=false;
  62. }
  63. top--,vis[now]=false;
  64. }
  65. }
  66. int main()
  67. {
  68. freopen("ugrid4.in","r",stdin);
  69. // freopen("ugrid.out","w",stdout);
  70. n=read();m=read(),k=read();
  71. ;i<=m;i++)
  72. {
  73. x=read(),y=read(),z=read();
  74. add(x,y),add(y,x);
  75. edde[i].x=x;
  76. edde[i].y=y;
  77. edde[i].z=z;
  78. }
  79. ;i<=n;i++)
  80. if(!dfn[i]) tarjan(i);
  81. )
  82. {
  83. ;i<=n;i++)
  84. if(belong[i]!=belong[k]) ans++;
  85. printf("%d",ans);
  86. ;
  87. }
  88. ;i<=n;i++) fa[i]=i;
  89. sort(edde+,edde++m,cmp);
  90. ;i<=m;i++)
  91. {
  92. x=edde[i].x,y=edde[i].y;
  93. int fx=find(x),fy=find(y);
  94. if(fx==fy) continue;
  95. fa[fx]=fy;sum++;
  96. ans+=(long long)edde[i].z;
  97. ) break;
  98. }
  99. printf("%lld",ans);
  100. ;
  101. }

60分

并查集

  1. #include<cstdio>
  2. #include<cstdlib>
  3. #include<cstring>
  4. #include<iostream>
  5. #include<algorithm>
  6. #define N 210000
  7. using namespace std;
  8. bool vis[N];
  9. long long ans;
  10. int n,m,z,x,y,k,s,t,sum,fa[N];
  11. int read()
  12. {
  13. ,f=; char ch=getchar();
  14. ; ch=getchar();}
  15. +ch-'; ch=getchar();}
  16. return x*f;
  17. }
  18. struct Edde
  19. {
  20. int x,y,z;
  21. }edde[N];
  22. struct Edge
  23. {
  24. int to,from,next;
  25. }edge[N<<];
  26. int cmp(Edde a,Edde b)
  27. {
  28. return a.z<b.z;
  29. }
  30. int find(int x)
  31. {
  32. if(fa[x]==x) return x;
  33. fa[x]=find(fa[x]);
  34. return fa[x];
  35. }
  36. int pd()
  37. {
  38. ;i<=n;i++)
  39. if(find(i)!=find(k))
  40. s++;
  41. }
  42. int main()
  43. {
  44. freopen("ugrid.in","r",stdin);
  45. freopen("ugrid.out","w",stdout);
  46. n=read();m=read(),k=read();
  47. ;i<=m;i++)
  48. {
  49. x=read(),y=read(),z=read();
  50. edde[i].x=x;
  51. edde[i].y=y;
  52. edde[i].z=z;
  53. }
  54. ;i<=n;i++) fa[i]=i;
  55. sort(edde+,edde++m,cmp);
  56. ;i<=m;i++)
  57. {
  58. x=edde[i].x,y=edde[i].y;
  59. int fx=find(x),fy=find(y);
  60. if(fx==fy) continue;
  61. fa[fx]=fy;sum++;
  62. ans+=(long long)edde[i].z;
  63. ) break;
  64. }
  65. pd();
  66. if(s) printf("%d",s);
  67. else printf("%lld",ans);
  68. ;
  69. }

靠,什么鬼畜的输出

s输出用lld第一三个点wa,ans输出用I64d第4个点wa、、、、

cogs——1215. [Tyvj Aug11] 冗余电网的更多相关文章

  1. COGS 1215. [Tyvj Aug11] 冗余电网

    ★   输入文件:ugrid.in   输出文件:ugrid.out   简单对比时间限制:1 s   内存限制:128 MB TYVJ八月月赛提高组第2题 测试点数目:5 测试点分值:20 --内存 ...

  2. COGS——T 1215. [Tyvj Aug11] 冗余电网

    http://www.cogs.pro/cogs/problem/problem.php?pid=1215 ★   输入文件:ugrid.in   输出文件:ugrid.out   简单对比时间限制: ...

  3. [TYVJ] P1017 冗余关系

    冗余关系 背景 Background 太原成成中学第3次模拟赛 第4题   描述 Description Mrs.Chen是一个很认真很称职的语文老师 ......所以,当她看到学生作文里的人物关系描 ...

  4. COGS 1191. [Tyvj Feb11] 猫咪的进化

    ★   输入文件:neko.in   输出文件:neko.out   简单对比时间限制:1 s   内存限制:128 MB [背景] 对于一只猫咪来说,它是有九条命的.但是并不是所有的猫咪都是这样,只 ...

  5. COGS 827. [Tyvj Feb11] 网站计划

    输入文件:web.in   输出文件:web.out   简单对比时间限制:1 s   内存限制:128 MB 描述 Description     Tyvj的Admin--zhq同学将在寒假开始实行 ...

  6. cogs 826. [Tyvj Feb11] GF打dota

    826. [Tyvj Feb11] GF打dota ★★☆   输入文件:dota.in   输出文件:dota.out   简单对比时间限制:1 s   内存限制:128 MB 众所周知,GF同学喜 ...

  7. cogs 826. [Tyvj Feb11] GF打dota 次短路详细原创讲解! dijkstra

    826. [Tyvj Feb11] GF打dota ★★☆   输入文件:dota.in   输出文件:dota.out   简单对比时间限制:1 s   内存限制:128 MB 众所周知,GF同学喜 ...

  8. cogs 1829. [Tyvj 1728]普通平衡树 权值线段树

    1829. [Tyvj 1728]普通平衡树 ★★★   输入文件:phs.in   输出文件:phs.out   简单对比时间限制:1 s   内存限制:1000 MB [题目描述] 您需要写一种数 ...

  9. [Tyvj Aug11] 黄金矿工

    传送门 Description 黄金矿工是一个经典的小游戏,它可以锻炼人的反应能力.该游戏中,可以通过“挖矿”获得积分并不断升级.玩家可以在线玩flash版黄金矿工,也可以下载后玩单机版黄金矿工.目前 ...

随机推荐

  1. FastDFS的简单使用

    互联网中有海量的文件,比如电商网站有海量的图片文件,视频网站有海量的视频文件,如果使用传统的模式上传文件,肯定是不可取的.因此需要使用第三方服务器来存储图片 . 一.FastDFS简介 ​ FastD ...

  2. JAVA 高级特性 JDBC

     需要的jdbc jar 包: mysql-connector-java-5.1.38-b...960.9 KB ojdbc6.jar2.0 MB sqljdbc4.jar455.4 KB   数据持 ...

  3. Mac下部署与启动STF

    一.stf在Mac下的部署1.安装Java及jdk可自己谷歌(如果不能自建云梯)2.安装nodejs包(我是直接在官网下载的LTS版本) • Node.js v8.12.0 to /usr/local ...

  4. spark on yarn模式下内存资源管理(笔记2)

    1.spark 2.2内存占用计算公式 https://blog.csdn.net/lingbo229/article/details/80914283 2.spark on yarn内存分配** 本 ...

  5. eval()将json 字符串转换为数组

    json ={ GW:[{id:"655",mc:"董事"},{id:"656",mc:"书记"},{id:" ...

  6. -webkit/IE/Firefox的一些样式

    仅限于-webkit的样式特效:-webkit-overflow-scrolling:touch;滚动时回弹效果:如果出现偶尔卡住不动的情况,那么在使用该属性的元素上不设置定位或者手动设置定位为sta ...

  7. iTOP4418开发板7寸屏幕Android系统下横竖屏设置

    Android系统屏幕旋转设置 平台: iTOP4418开发板+7寸屏幕 1. Androd4.4源码可以编译成手机模式和平板模式,讯为iTop4418 开发平台的Android系统默认编译为平板模式 ...

  8. Jmeter之断言——检查点

    Jmeter里的断言相当于lr中的检查点.用于检查测试中得到的响应数据等是否符合预期,用以保证性能测试过程中的数据交互与预期一致. 使用断言的目的:在request的返回层面增加一层判断机制:因为re ...

  9. windos快捷键

    F1帮助 F2改名 F3搜索 F4地址 F5刷新 F6切换 F10菜单 CTRL+A全选 CTRL+C复制 CTRL+X剪切 CTRL+V粘贴 CTRL+Z撤消 CTRL+O打开 SHIFT+DELE ...

  10. PHP 中 echo 和 print 的区别

    一般来说,PHP中动态输出HTML内容,是通过print 和 echo 语句来实现的,在实际使用中, print 和 echo 两者的功能几乎是完全一样.可以这么说,凡是有一个可以使用的地方,另一个也 ...