ccf 201903-5 317任务

用全源最短路径只能得60,因为数据太大了,全源最短大概复杂度为O(n*m*logn),大概要1-2秒左右超时,想不到好的算法qaq。
#include<bits/stdc++.h>
using namespace std;
#define maxn 10003
vector<pair<int,int> > ss[maxn];
int jl[maxn][maxn]; int f[maxn];
int ff(int x){
if(f[x]==x)return x;
int k=f[x];
f[x]=f[k];
return ff(k);
} void unionnode(int n,int m){
int a=ff(n),b=ff(m);
if(a==b)return ;
f[a]=b;return ;
} bool pd(int a,int b){
return ff(a)==ff(b);
} int main(){
ios::sync_with_stdio(false);
int n,m,k;cin>>n>>m>>k;
vector<int> ll;
int d[n+1];
for(int i=1;i<n+1;i++){
cin>>d[i];
if(d[i]){
ll.push_back(i);
}
}
for(int i=1;i<maxn;i++){
f[i]=i;
}
while(m--){
int a,b,c;
cin>>a>>b>>c;
unionnode(a,b);
ss[a].push_back({b,c});
ss[b].push_back({a,c});
}
memset(jl,0x3f,sizeof(jl));
for(int i=1;i<n+1;i++){
jl[i][i]=0;
}
priority_queue<pair<int,int> > q;
for(auto i:ll){
while(!q.empty())q.pop();
for(int j=1;j<=i;j++){
if(jl[i][j]!=jl[0][0])q.push({0,j});
}
int vis[n+1]={0};
while(!q.empty()){
int b=q.top().second;q.pop();
if(vis[b])continue;
vis[b]=1;
for(int j=0;j<ss[b].size();j++){
int node=ss[b][j].first,t=ss[b][j].second;
if(vis[node])continue;
if(jl[i][b]+t>=jl[i][node])continue;
jl[i][node]=jl[i][b]+t;
q.push({-jl[i][node],node});
}
}
}
int sz[maxn];
for(int i=1;i<n+1;i++){
int cnt=0;
long long cost=0;
for(auto x:ll){
if(pd(i,x)){
sz[cnt++]=jl[x][i];
}
}
sort(sz,sz+cnt);
for(int j=0;j<min(cnt,k);j++){
cost+=sz[j];
}
cout<<cost;
i==n||cout<<endl;
}
return 0;
} /*
7 6 2
1 0 1 0 1 1 0
1 4 1
1 2 3
2 4 4
2 3 5
2 5 7
6 7 5
*/
ccf 201903-5 317任务的更多相关文章
- 第16次CCF CSP认证-第5题-317 号子任务(subtask317)-图论最短路径
[题目背景]“你在平原上走着走着,突然迎面遇到一堵墙,这墙向上无限高,向下无限深,向左无限远,向右无限远,这墙是什么?”——<流浪地球>原著我们带着地球去流浪了,为了处理流浪过程中可能会发 ...
- CCF(317号子任务)-35分:Dijikstra算法
317号子任务 201903-5 为了过前60分,想使用dijikstra优化算法的,但是最后还是只过了35分.这里的思路只需要先将所有的行星据点进行一次dijikstra,分别存储所有点到行星的最短 ...
- ccf 201903-5 317号子任务(60分)
看到这题,第一印象,用dijkstra算法求n次单源最短路,时间复杂度O(n^3),超时30分妥妥的. 于是用优先队列优化,O(n*mlogm),快很多,但依然30. 那么不妨换一种思路,题目要求的是 ...
- CCF考试
第八次CCF考试记录 代码还不知道对不对,过两天出成绩. 成绩出来了,310分. 100+100+100+10+0: 考试13:27开始,17:30结束,提交第4题后不再答题,只是检查前四题的代码 第 ...
- [codeforces 317]A. Perfect Pair
[codeforces 317]A. Perfect Pair 试题描述 Let us call a pair of integer numbers m-perfect, if at least on ...
- CCF关于NOIP2014复赛报名的通知
CCF关于NOIP2014复赛报名的通知 CCF NOIP2014复赛全部实行网上注册.报名.未通过网上报名的选手将不具备参赛和申诉资格. 系统注册须知: NOIP2014复赛注册时间:2014年 ...
- [CCF] Z字形扫描
CCF Z字形扫描 感觉和LeetCode中的ZigZag还是有一些不一样的. 题目描述 在图像编码的算法中,需要将一个给定的方形矩阵进行Z字形扫描(Zigzag Scan).给定一个n×n的矩阵,Z ...
- [CCF] ISBN号码检测
CCF ISBN号码检测 题目概述 每一本正式出版的图书都有一个ISBN号码与之对应,ISBN码包括9位数字.1位识别码和3位分隔符,其规定格式如"x-xxx-xxxxx-x",其 ...
- CCF NOI系列活动
NOI-全国青少年信息学奥林匹克竞赛全国青少年信息学奥林匹克竞赛(NOI)是国内信息学领域内面向中学生的最高水平的大赛,每省派经选拔产生的选手(其中一名是女选手)参加,NOI每年在不同的省市举行. N ...
随机推荐
- docker中镜像的提交和上传
本文介绍如何将本地的镜像上传到镜像仓库.以及上传时遇到"denied: requested access to the resource is denied"的解决方法. 原文地址 ...
- vue项目报错webpackJsonp is not defined
在vue单页面应用中,我们大概都会使用CommonsChunkPlugin这个插件. 传送门 CommonsChunkPlugin 但是在项目经过本地测试没有任何问题,打包上线后却会报错 webpac ...
- Linux 下查看字体
1.查看所有字体 命令:fc-list 2.查看中文字体 命令:fc-list :lang=zh 3.查看更多字体 命令:fc-match -v "AR PL UKai CN"
- 解决Jenkins运行robot framework selenium脚本不打开浏览器的问题
1.总结就是,不能使用msi安装的jenkins,最好使用tomcat下的war包方式的jenkins 参考连接https://www.cnblogs.com/hotpsy/p/6907233.htm ...
- Doctype知识点总结
DOCTYPE是document type (文档类型) 的缩写.<!DOCTYPE >声明位于文档的最前面,处于标签之前,它不是html标签.主要作用是告诉浏览器的解析器使用哪种HTML ...
- jeecg字典表—报表配置(popup弹框)
新建字典表 录入字典数据 新建报表配置 新建用于popup的表 字典Code中对应,用户接受popup返回的字段(按顺序写) 结果校验
- 01-Redhat/Centos7网卡命名介绍及修改方式
1. Redhat/Centos7网卡命名介绍 1.1 网络设备命名 Redhat/Centos7提供在网络接口中使用新的网络设备命名方法.这些功能会更改系统中的网络接口名称,以便定位和区分这些接口. ...
- Visual Studio Code扩展:
Auto Close TagAuto Rename TagBeautifyChinese (Simplified) Language Pack for Visual Studio CodeClass ...
- JS中的事件委托(事件代理)
一步一步来说说事件委托(或者有的资料叫事件代理) js中事件冒泡我们知道,子元素身上的事件会冒泡到父元素身上. 事件代理就是,本来加在子元素身上的事件,加在了其父级身上. 那就产生了问题:父级那么多子 ...
- 买房安全无忧 l 龙光集团与光大银行二手房资金监管战略合作!
二手房买卖中,担心购房过程中房款交易的安全以致买方不敢先付款.卖方不敢先过户的现象比比皆是.近日,龙光集团与光大银行形成战略合作伙伴,联合推出“二手房交易资金监管”业务,彻底改变了二手房交易的付款模式 ...