2016/06/25

诸老师讲的图论,听了这道题很想写一下,但是看来要留到期末考后了。

07/01

有的标记是说生成树,有的是并查集。。。然而我只是觉得这棵奇怪的生成树蛮精妙的。。。

题目比较难过的只是K的限制,要读清楚题意,像我一开始就没有注意第一要求是“免费道路尽量少”。。。

至于这个K,可大可小。。最好的做法便是先将所有的水泥路连上,找到“必须需要的鹅卵石路”。。。

然后按照K的限制一条条地加。。。代码写的有些臭长。。。因为一个月没写代码了。。。又把==写成了=

判断no solution的时候忘记压缩路径了。。。又要debug。。。。。

#include<cstdio>
#include<cstring>
#include<algorithm>
#define N 200000
using namespace std;
int bian[N],f[N],uu[N],vv[N],need[N];
int n,m,k,all,al;
int find(int x)
{
  if(f[x]!=x)f[x]=find(f[x]);return(f[x]);
}
int main()
{
  scanf("%d%d%d",&n,&m,&k);
  ;i<=n;i++)f[i]=i;int u,v,w;
  memset(need,,sizeof(need));
  ;i<=m;i++)
  {
    scanf("%d%d%d",&u,&v,&w);bian[i]=w;uu[i]=u;vv[i]=v;
    ){
      int x=find(u),y=find(v);
      if(x!=y)f[x]=y;
    }else all++;
  }
  ;i<=m;i++)
  )
  {
      int x=find(uu[i]),y=find(vv[i]);
      ,f[x]=y,al++;
  }
  if(al>k||all<k){

               printf(;
    }

  ;i<=n;i++)f[i]=i;

  ;i<=m;i++)
  {
    )
    {
      int x=find(uu[i]),y=find(vv[i]);if(x!=y)f[x]=y;
    }
  }
  ;i<=m;i++)
   &&bian[i]==)
   {
     ,al++;
   }
  if(al<k){
    printf(;
  }
  ;i<=m;i++)
   )
   {
     ;
    }
  );
  ;i<=n;i++)if(x!=find(i)){

    printf(;}
  ;i<=m;i++)
   )printf("%d %d %d\n",uu[i],vv[i],bian[i]);
} 

【bzoj3624】【apio2008】免费道路的更多相关文章

  1. [BZOJ3624][Apio2008]免费道路

    [BZOJ3624][Apio2008]免费道路 试题描述 输入 输出 输入示例 输出示例 数据规模及约定 见“输入”. 题解 第一步,先尽量加入 c = 1 的边,若未形成一个连通块,则得到必须加入 ...

  2. BZOJ3624: [Apio2008]免费道路(最小生成树)

    题意 题目链接 Sol 首先答案一定是一棵树 这棵树上有一些0边是必须要选的,我们先把他们找出来,如果数量$\geqslant k$显然无解 再考虑继续往里面加0的边,判断能否加到k条即可 具体做法是 ...

  3. bzoj 3624: [Apio2008]免费道路 生成树的构造

    3624: [Apio2008]免费道路 Time Limit: 2 Sec  Memory Limit: 128 MBSec  Special JudgeSubmit: 111  Solved: 4 ...

  4. 题解 Luogu P3623 [APIO2008]免费道路

    [APIO2008]免费道路 题目描述 新亚(New Asia)王国有 N 个村庄,由 M 条道路连接.其中一些道路是鹅卵石路,而其它道路是水泥路.保持道路免费运行需要一大笔费用,并且看上去 王国不可 ...

  5. BZOJ 3624: [Apio2008]免费道路

    3624: [Apio2008]免费道路 Time Limit: 2 Sec  Memory Limit: 128 MBSec  Special JudgeSubmit: 1201  Solved:  ...

  6. [Apio2008]免费道路[Kruscal]

    3624: [Apio2008]免费道路 Time Limit: 2 Sec  Memory Limit: 128 MBSec  Special JudgeSubmit: 1292  Solved:  ...

  7. P3623 [APIO2008]免费道路

    3624: [Apio2008]免费道路 Time Limit: 2 Sec Memory Limit: 128 MBSec Special Judge Submit: 2143 Solved: 88 ...

  8. Kruskal算法及其类似原理的应用——【BZOJ 3654】tree&&【BZOJ 3624】[Apio2008]免费道路

    首先让我们来介绍Krukal算法,他是一种用来求解最小生成树问题的算法,首先把边按边权排序,然后贪心得从最小开始往大里取,只要那个边的两端点暂时还没有在一个联通块里,我们就把他相连,只要这个图里存在最 ...

  9. [APIO2008]免费道路

    [APIO2008]免费道路 BZOJ luogu 先把必须连的鹅卵石路连上,大于k条no solution 什么样的鹅卵石路(u,v)必须连?所有水泥路都连上仍然不能使u,v连通的必须连 补全到k条 ...

  10. [APIO2008]免费道路(生成树)

    新亚(New Asia)王国有 N 个村庄,由 M 条道路连接.其中一些道路是鹅卵石路,而其它道路是水泥路.保持道路免费运行需要一大笔费用,并且看上去 王国不可能保持所有道路免费.为此亟待制定一个新的 ...

随机推荐

  1. moogodb3.x总结

    搞了三天了,从阿里云服务器,到linux,再到mongodb数据库,只有一个感觉就是,头都要炸了,这篇是对mongodb做一个总结吧,也算有一个成果了 mongodb在linux下的安装 mongod ...

  2. Mysql 调用存储过程的两种方式

    一,使用call语句: 如:创建 call 调用: 使用占位符,通过prepare,execute调用:

  3. spring中scope作用域(转)

    今天研究了一下scope的作用域.默认是单例模式,即scope="singleton".另外scope还有prototype.request.session.global sess ...

  4. shared_ptr 和 unique_ptr

    c++11标准废除乐auto_ptr, C++ 标准库智能指针 使用这些智能指针作为将指针封装为纯旧 C++ 对象 (POCO) 的首选项. unique_ptr 只允许基础指针的一个所有者. 除非你 ...

  5. ios 拨打电话

    1,这种方法,拨打完电话回不到原来的应用,会停留在通讯录里,而且是直接拨打,不弹出提示NSMutableString * str=[[NSMutableString alloc] initWithFo ...

  6. EasyUi – 6.easyui常见问题

    1.进度条 2.JQuery EasyUI弹出对话框解决Asp.net服务器控件无法执行后台代码的方法 3. 三张表的连接查询现在到datagrid里 4.日期组合框DateBox设置readonly ...

  7. Spring.Net的IOC入门

    1.构造器注入 namespace Spring.Net { class Program { //构造器注入 static void Main(string[] args) { IApplicatio ...

  8. c++11的初始化

    c++11 中类型初始更加方便 比如     vector<int> vec = {1,2,3}; vector<int> vec{1,2,3}; map<string, ...

  9. HTML5学习之跨文档传输消息(七)

    新标准中提供了文档之间直接的消息传输API.而且不限制跨域消息传递! 发送消息使用的是Window对象的postMessage(data,targetURL)方法就可以了,但给哪个window对象发送 ...

  10. Windows 10 周年更新正式版下载 + win10 快捷键

    Windows 10 周年更新正式版  360云资源总汇(施工中): https://yunpan.cn/c6Svi7Az52XBs (提取码:e5dd)今后提到周年更新版.1607版或RS1版,都是 ...