cogs——1215. [Tyvj Aug11] 冗余电网
1215. [Tyvj Aug11] 冗余电网
★ 输入文件:ugrid.in 输出文件:ugrid.out 简单对比
时间限制:1 s 内存限制:128 MB
- TYVJ八月月赛提高组第2题
- 测试点数目:5
- 测试点分值:20
- --内存限制:128M
- --时间限制:1s
【题目描述】
孤 岛上共有N个村庄,发电站要建在第K个村庄中。S国的专家要在N个村庄间修建M条输电线路,但由于地理原因,M条线路无法保证每个村庄都与第K个村庄(建 有发电站)直接相连,同样,也不一定能保证每个村庄都与第K个村庄间接相连(假设A与B直接相连,B与C直接相连,那么A与C间接相连)。
然而,由于S国的专家智商实在太“高”了,以至于设计出了许多冗余线路。现给出第i条线路两个端点Ui,Vi(分别表示线路连接的两个村庄,Ui!=Vi)和长度Li,请你帮岛民算一下:如果电网可以覆盖全岛,最少需要多长的电线;若不能,有多少个村庄无电可用。
注意:0<=冗余线路数目<m;部分数据有重边。电网可双向导电。
【输入格式】
接下来M行:Ui Vi Li
具体含义见题目描述
【输出格式】
如果电网可以覆盖全岛,输出最少需要的电线长度;
若不能,输出无电可用的村庄的个数。
【样例输入】
【样例1】 5 5 1 1 2 1 2 3 1 3 4 1 4 5 1 5 1 1 【样例2】 5 5 1 1 2 1 1 2 2 1 2 3 3 4 1 5 4 2
【样例输出】
【样例1】 4 【样例2】 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判断是否在同一个环里,爆栈、、、
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
#define N 2100000
#define maxn 9999999
using namespace std;
bool vis[N];
long long ans;
int n,m,z,x,y,k,s,tot,sum,top,tim;
int fa[N],dfn[N],low[N],head[N],stack[N],belong[N];
int read()
{
,f=; char ch=getchar();
; ch=getchar();}
+ch-'; ch=getchar();}
return x*f;
}
struct Edde
{
int x,y,z;
}edde[N];
struct Edge
{
int to,from,next;
}edge[N<<];
int add(int x,int y)
{
tot++;
edge[tot].to=y;
edge[tot].next=head[x];
head[x]=tot;
}
int cmp(Edde a,Edde b)
{
return a.z<b.z;
}
int find(int x)
{
if(fa[x]==x) return x;
fa[x]=find(fa[x]);
return fa[x];
}
int tarjan(int now)
{
dfn[now]=low[now]=++tim;
stack[++top]=now,vis[now]=true;
for(int i=head[now];i;i=edge[i].next)
{
int t=edge[i].to;
if(vis[t]) low[now]=min(low[now],dfn[t]);
else if(!dfn[t]) tarjan(t),low[now]=min(low[now],low[t]);
}
if(low[now]==dfn[now])
{
s++;belong[now]=s;
for(;stack[top]!=now;top--)
{
int x=stack[top];
belong[x]=s,vis[x]=false;
}
top--,vis[now]=false;
}
}
int main()
{
freopen("ugrid4.in","r",stdin);
// freopen("ugrid.out","w",stdout);
n=read();m=read(),k=read();
;i<=m;i++)
{
x=read(),y=read(),z=read();
add(x,y),add(y,x);
edde[i].x=x;
edde[i].y=y;
edde[i].z=z;
}
;i<=n;i++)
if(!dfn[i]) tarjan(i);
)
{
;i<=n;i++)
if(belong[i]!=belong[k]) ans++;
printf("%d",ans);
;
}
;i<=n;i++) fa[i]=i;
sort(edde+,edde++m,cmp);
;i<=m;i++)
{
x=edde[i].x,y=edde[i].y;
int fx=find(x),fy=find(y);
if(fx==fy) continue;
fa[fx]=fy;sum++;
ans+=(long long)edde[i].z;
) break;
}
printf("%lld",ans);
;
}
60分
并查集
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
#define N 210000
using namespace std;
bool vis[N];
long long ans;
int n,m,z,x,y,k,s,t,sum,fa[N];
int read()
{
,f=; char ch=getchar();
; ch=getchar();}
+ch-'; ch=getchar();}
return x*f;
}
struct Edde
{
int x,y,z;
}edde[N];
struct Edge
{
int to,from,next;
}edge[N<<];
int cmp(Edde a,Edde b)
{
return a.z<b.z;
}
int find(int x)
{
if(fa[x]==x) return x;
fa[x]=find(fa[x]);
return fa[x];
}
int pd()
{
;i<=n;i++)
if(find(i)!=find(k))
s++;
}
int main()
{
freopen("ugrid.in","r",stdin);
freopen("ugrid.out","w",stdout);
n=read();m=read(),k=read();
;i<=m;i++)
{
x=read(),y=read(),z=read();
edde[i].x=x;
edde[i].y=y;
edde[i].z=z;
}
;i<=n;i++) fa[i]=i;
sort(edde+,edde++m,cmp);
;i<=m;i++)
{
x=edde[i].x,y=edde[i].y;
int fx=find(x),fy=find(y);
if(fx==fy) continue;
fa[fx]=fy;sum++;
ans+=(long long)edde[i].z;
) break;
}
pd();
if(s) printf("%d",s);
else printf("%lld",ans);
;
}
靠,什么鬼畜的输出
s输出用lld第一三个点wa,ans输出用I64d第4个点wa、、、、
cogs——1215. [Tyvj Aug11] 冗余电网的更多相关文章
- COGS 1215. [Tyvj Aug11] 冗余电网
★ 输入文件:ugrid.in 输出文件:ugrid.out 简单对比时间限制:1 s 内存限制:128 MB TYVJ八月月赛提高组第2题 测试点数目:5 测试点分值:20 --内存 ...
- COGS——T 1215. [Tyvj Aug11] 冗余电网
http://www.cogs.pro/cogs/problem/problem.php?pid=1215 ★ 输入文件:ugrid.in 输出文件:ugrid.out 简单对比时间限制: ...
- [TYVJ] P1017 冗余关系
冗余关系 背景 Background 太原成成中学第3次模拟赛 第4题 描述 Description Mrs.Chen是一个很认真很称职的语文老师 ......所以,当她看到学生作文里的人物关系描 ...
- COGS 1191. [Tyvj Feb11] 猫咪的进化
★ 输入文件:neko.in 输出文件:neko.out 简单对比时间限制:1 s 内存限制:128 MB [背景] 对于一只猫咪来说,它是有九条命的.但是并不是所有的猫咪都是这样,只 ...
- COGS 827. [Tyvj Feb11] 网站计划
输入文件:web.in 输出文件:web.out 简单对比时间限制:1 s 内存限制:128 MB 描述 Description Tyvj的Admin--zhq同学将在寒假开始实行 ...
- cogs 826. [Tyvj Feb11] GF打dota
826. [Tyvj Feb11] GF打dota ★★☆ 输入文件:dota.in 输出文件:dota.out 简单对比时间限制:1 s 内存限制:128 MB 众所周知,GF同学喜 ...
- cogs 826. [Tyvj Feb11] GF打dota 次短路详细原创讲解! dijkstra
826. [Tyvj Feb11] GF打dota ★★☆ 输入文件:dota.in 输出文件:dota.out 简单对比时间限制:1 s 内存限制:128 MB 众所周知,GF同学喜 ...
- cogs 1829. [Tyvj 1728]普通平衡树 权值线段树
1829. [Tyvj 1728]普通平衡树 ★★★ 输入文件:phs.in 输出文件:phs.out 简单对比时间限制:1 s 内存限制:1000 MB [题目描述] 您需要写一种数 ...
- [Tyvj Aug11] 黄金矿工
传送门 Description 黄金矿工是一个经典的小游戏,它可以锻炼人的反应能力.该游戏中,可以通过“挖矿”获得积分并不断升级.玩家可以在线玩flash版黄金矿工,也可以下载后玩单机版黄金矿工.目前 ...
随机推荐
- 工厂方法模式及php实现
工厂方法模式: 工厂方法模式(Factory Method Pattern)又称为工厂模式,也叫虚拟构造器(Virtual Constructor)模式或者多态工厂(Polymorphic Facto ...
- struts 2.5 There is no Action mapped for namespace [/] and action name [user_find] associated with context path [/struts2_crm].
遇到了这个错误. There is no Action mapped for namespace [/] and action name [user_find] associated with con ...
- 关于Android软键盘把布局顶上去的问题(一)
最近接触到了一个登陆页面,布局最上面显示的是一个波纹的view,中间显示账号和密码的EditText,紧接着还有一个Button: 希望:点击EditText时,软键盘不能把波纹的view顶出去,也不 ...
- 「Python调试器」,快速定位各种疑难杂症!!
现在很多的编辑器其实都带着「调试程序」的功能,比如写 c/c++ 的 codeblocks,写 Python 的 pycharm,这种图形界面的使用和显示都相当友好,简单方便易学,这个不是我这篇文章要 ...
- vue脚手架引入swiper
方法一: 下载swiper: npm install swiper --save-dev swiper4.0使用入口:http://www.swiper.com.cn/usage/index.html ...
- 安装Subversion1.82(SVN)
安装Subversion1.82(SVN)插件 简介 :SVN是团队开发的代码管理工具,它使我们得以进行多人在同一平台之下的团队开发. 解决问题:Eclipse下的的SVN插件安装. 学到 ...
- 第3节 hive高级用法:14、hive的数据压缩
六.hive的数据压缩 在实际工作当中,hive当中处理的数据,一般都需要经过压缩,前期我们在学习hadoop的时候,已经配置过hadoop的压缩,我们这里的hive也是一样的可以使用压缩来节省我们的 ...
- hive纯命令行
vim /etc/profileexport HIVE_HOME=/export/servers/hive...export PATH=:$HIVE_HOME/bin:$PATH 前台启动hive:h ...
- 如何用SQL语句在指定字段前面插入新的字段?
如何用SQL语句在指定字段前面插入新的字段? 2007-10-17 09:28:00| 分类: 笔记|举报|字号 订阅 create proc addcolumn @tablename va ...
- js小结(一)
想要的效果:比如说返回 25% 12.5% 33.33% 有几位小数就显示几位,就用 a=Math.round(a*100)/100 如果想要强制返还两位小数,就使用 a=a.toFixed(2); ...