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】
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] 冗余电网的更多相关文章

  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. 移动端 H5 拍照 从手机选择图片,移动端预览,图片压缩,图片预览,再上传服务器

    前言:最近公司的项目在做全网营销,要做非微信浏览器的wap 站 的改版,其中涉及到的一点技术就是采用H5 选择手机相册中的图片,或者拍照,再将获取的图片进行压缩之后上传. 这个功能模块主要有这5点比较 ...

  2. 遮罩 HUD 指示器 蒙板 弹窗

    遮罩 HUD 指示器 蒙板 弹窗 UIAlertView的使用<代理方法处理按钮点击> UIAlertView *alertView = [[UIAlertView alloc] init ...

  3. 解决QTreeView不能设置列宽的问题

    转载请注明出处:http://www.cnblogs.com/dachen408/p/7206738.html 设置model之前: ui.treeView->setColumnWidth(0, ...

  4. xamarin 学习笔记02- IOS Simulator for windows 安装

    微软发布了在window下的ios模拟器 下载 ios模拟器 并安装在windows系统上. Xamarin for Visual Studio 和 网络上的 Mac 中的 Xamarin.iOS 开 ...

  5. .less css 使用 LESS 简化层叠样式表(CSS)的编写(另外一种css框架 sass)

    使用 LESS 简化层叠样式表(CSS)的编写 https://less.bootcss.com/ Sass完全兼容所有版本的CSS https://gojs.net/latest/samples/f ...

  6. spring的设计思想

    在学习Spring框架的时候, 第一件事情就是分析Spring的设计思想 在学习Spring的时候, 需要先了解耦合和解耦的概念 耦合: 简单来说, 在软件工程当中, 耦合是指对象之间的相互依赖 耦合 ...

  7. PHP 下基于 php-amqp 扩展的 RabbitMQ 简单用例 (四) -- Push API 和 Pull API

    RabbitMQ 中针对消息的分发提供了 Push API (订阅模式) 和 Pull API (主动获取) 两种模式. 在 PHP 中, 这两种模式分别通过 AMQPQueue 类中的 consum ...

  8. 第2节 mapreduce深入学习:16、17、map端的join算法的实现

    map端的join算法,适用于小表join大表的时候,一次性把小表的数据全部装载到内存当中来: 代码: MapJoinMain: package cn.itcast.demo5.mapJoin; im ...

  9. 第2节 mapreduce深入学习:4, 5

    第2节 mapreduce深入学习:4.mapreduce的序列化以及自定义排序 序列化(Serialization)是指把结构化对象转化为字节流. 反序列化(Deserialization)是序列化 ...

  10. js中间件

    js中间件 当我们在编写业务代码时候,我们无法避免有些业务逻辑复杂而导致业务代码写得又长又乱,如果再加上时间紧凑情况下写出来的代码估计会更让人抓狂.以至于我们一直在寻求更好的架构设计和更好的代码设计, ...