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 ...
随机推荐
- Python之Pandas的一些理解
Pandas的功能: 1. 结构化的数据分析; 相比excel,可以处理更大量的数据和更好的性能 2. 对数据的清洗
- apache环境下ssl证书链不完整问题解决,原因是缺少中间证书
事情的起因是,对一个网站的升级,从http升级到https,苹果手机可以正常访问,唯独安卓手机出现空白,安卓访问https的时候是出现的空白. 服务器的系统是windows Server 2008 R ...
- Scrapy框架-Spider
目录 1. Spider 2.Scrapy源代码 2.1. Scrapy主要属性和方法 3.parse()方法的工作机制 1. Spider Spider类定义了如何爬取某个(或某些)网站.包括了爬取 ...
- 一键发布部署vs插件[AntDeploy]开源了
deploy to remote server by one button click 功能 支持docker一键部署(支持netcore) 支持iis一键部署(支持netcore和framework ...
- Spring缓存注解@Cacheable、@CacheEvict、@CachePut使用(转)
原文地址:https://www.cnblogs.com/fashflying/p/6908028.html 从3.1开始,Spring引入了对Cache的支持.其使用方法和原理都类似于Spring对 ...
- ABP实践(2)-ASP.NET Core 2.x版本EntityFrameworkCore(EF)使用mysql数据库
上一篇中EntityFrameworkCore默认使用的是微软的sql server,本篇改为mysql步骤如下: 1,在基础层xxx.EntityFrameworkCore依赖项添加Pomelo.E ...
- codeforces305A
Strange Addition CodeForces - 305A Unfortunately, Vasya can only sum pairs of integers (a, b), such ...
- [2019.04.01]Linux 学习心得(2)-- tar 命令的理解
这篇文章并不是发布最早的但是阅读量却每天都见长,很想知道各位大大是怎么找到这篇文章的.如果不忙,还请各位大大评论一下我看看,没准我可以为大家改进一下本文,提升一下质量. =============== ...
- Educational Codeforces Round 63 Div. 2
A:找到两个相邻字符使后者小于前者即可. #include<bits/stdc++.h> using namespace std; #define ll long long #define ...
- Git-01-上传项目到github
function fun1(){ Git上传项目到github Folder-->Git bash here Execute command: --git clone 仓库地址 多出一个 ...