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版黄金矿工,也可以下载后玩单机版黄金矿工.目前 ...
随机推荐
- poj2991 Crane
思路: 线段树每个节点维护第一条线段起点指向最后一条线段终点的向量,于是每一个操作都是一次区间更新.使用成段更新的线段树即可.实现: #include <cstdio> #include ...
- U9249 【模板】BSGS
题目描述 给定a,b,p,求最小的非负整数x 满足a^x≡b(mod p) 若无解 请输出“orz” 输入输出格式 输入格式: 三个整数,分别为a,b,p 输出格式: 满足条件的非负整数x 输入输出样 ...
- R in action读书笔记(9)-第八章:回归 -回归诊断
8.3回归诊断 > fit<-lm(weight~height,data=women) > par(mfrow=c(2,2)) > plot(fit) 为理解这些图形,我们来回 ...
- Win7系统32位和64位的区别
Win7系统32位和64位的区别已经是一个老话题了,可是还是有很多朋友不明白.这两者到底有什么区别呢?下面本文与大家通俗的介绍下Win7系统32位和64位的区别,其他一些深入的理论讲述,大家可以看看文 ...
- Node.js——fs常用API
文件状态 文件删除 文件信息 读取文件夹 文件的截取 创建文件夹 删除目录 文件监视,可以设置监视频率 文件重命名,可以用来剪切文件 注意 fs.open() fs.close() 这是最原始的读写方 ...
- ButterKnife 在父类 点击事件没反应的解决方案
在用继承的方式实现butterKnife的封装的时候遇到问题, butterKnife就在baseActivity中绑定的,但是父类中公共控件点击事件无效.找了半天原因,原来是子类和父类定义的点击方法 ...
- 通过SSDT HOOK实现进程保护和进程隐藏
---恢复内容开始--- 首先,我要说一件很重要的事,本人文采不好,如果哪里说的尴尬了,那你就尴尬着听吧...... SSDT HOOK最初貌似源于Rookit,但是Rookit之前有没有其他病毒使用 ...
- C++ 类、对象、class
一.对象初始化 1.不能在类声明中对数据成员初始化,因为类只是一个抽象类型,不占存储空间,无处容纳数据. 2.若某类的数据成员都是public,则可以像结构体一样初始化,如 Time t={12,21 ...
- 用Python控制摄像头拍照并发邮件
概述前言 工具 思路 安装及导入包 设置参数 实现拍照 构造邮件内容 发送邮件 判断网络连接 开机自启 后记 o1 前言为什么会有写这个程序的想法呢? 最初的想法是写一个可以用电脑前置摄像头拍照的程序 ...
- date - 打印或设置系统日期和时间
总览 date [选项]... [+格式] date [选项] [MMDDhhmm[[CC]YY][.ss]] 描述 根据指定格式显示当前时间或设置系统时间. -d, --date=STRING 显示 ...