读题两小时系列……

在读懂题意之后,发现M(c)就是c这块最大权割边也就是的最小生成树的最大权边的权值,所以整个问题都可以在MST的过程中解决(M和c都是跟着并查集变的)

不过不是真的最小生成树,是合并了所有a[i].w<=min(b[zhao(f[a[i].u])]+z[c[zhao(f[a[i].u])]],b[zhao(f[a[i].v])]+z[c[zhao(f[a[i].v])]])的边的若干联通块,根据定义那样的边不能连在两块之间,一定需要放在一个块里,然后每次合并的时候更新M和c即可

#include<iostream>
#include<cstdio>
#include<vector>
#include<algorithm>
using namespace std;
const int N=1000005;
int n,m,z[N],b[N],c[N],s[N],ans,f[N];
vector<int>v[N];
struct qwe
{
int u,v,w;
}a[N];
bool cmp(const qwe &a,const qwe &b)
{
return a.w<b.w;
}
int read()
{
int r=0,f=1;
char p=getchar();
while(p>'9'||p<'0')
{
if(p=='-')
f=-1;
p=getchar();
}
while(p>='0'&&p<='9')
{
r=r*10+p-48;
p=getchar();
}
return r*f;
}
int zhao(int x)
{
return f[x]==x?x:f[x]=zhao(f[x]);
}
int main()
{
n=read(),m=read();
for(int i=1;i<=n;i++)
z[i]=read(),f[i]=i,c[i]=1;
for(int i=1;i<=m;i++)
a[i].u=read(),a[i].v=read(),a[i].w=read();
sort(a+1,a+1+m,cmp);
for(int i=1;i<=m;i++)
if(a[i].w<=min(b[zhao(f[a[i].u])]+z[c[zhao(f[a[i].u])]],b[zhao(f[a[i].v])]+z[c[zhao(f[a[i].v])]]))
{
int fu=zhao(a[i].u),fv=zhao(a[i].v);
if(fu!=fv)
{
f[fu]=fv;
c[fv]+=c[fu];
b[fv]=a[i].w;
}
}
for(int i=1;i<=n;i++)
v[zhao(f[i])].push_back(i);
for(int i=1;i<=n;i++)
if(v[i].size())
ans++;
printf("%d\n",ans);
for(int i=1;i<=n;i++)
if(v[i].size())
{
printf("%d ",v[i].size());
for(int j=0;j<v[i].size();j++)
printf("%d ",v[i][j]);
puts("");
}
return 0;
}

最新文章

  1. 修改session垃圾回收几率
  2. Effective C++ 笔记2(构造,析构,赋值)
  3. Windows Azure Service Bus (3) 队列(Queue) 使用VS2013开发Service Bus Queue
  4. mfs-管理员
  5. InternetOpenA
  6. 自主架设VOIP系统
  7. c-大量经典的c算法---ShinePans
  8. C# Linq基本常用用法
  9. springboot中使用kindeditor富文本编辑器实现博客功能
  10. python新式类与旧式类
  11. Vue 路由的嵌套
  12. [CQOI2005]三角形面积并
  13. Oarcle 入门之 order by 关键字
  14. js运行机制详解:event loop
  15. LoRaWAN 1.1 网络协议规范 - 3 物理层帧格式
  16. Codeforces Round #513 游记
  17. SQL注入之Sqli-labs系列第十一关(基于单引号的万能密码注入)
  18. 计算机网络协议包头赏析-TCP
  19. babel使用入门以及使用webpack+babel来&quot;编译&quot;你的JS代码
  20. trampoline蹦床函数解决递归调用栈问题

热门文章

  1. 通过css选择器class给元素添加cursor的坑
  2. Riak Core Guide 2
  3. (转)基于RTP的H264视频数据打包解包类
  4. Label标签 自动触发onclick,点击内部的Input
  5. 内核中led触发器实例【转】
  6. Retina屏幕下image-set
  7. Codeforces Round #369 (Div. 2) D. Directed Roads —— DFS找环 + 快速幂
  8. yii的增删改查
  9. Constructing Roads In JGShining's Kingdom
  10. IntelliJ IDEA 2018 设置代码提示对大小写不敏感