热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

2015多校第8场HDU5385贪心,最小生成树

题目链接:http:acm.hdu.edu.cnshowproblem.php?pid5385题意:给了一个有向连通图,要给图中的每一条

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5385

题意:给了一个有向连通图,要给图中的每一条边加一个权值,使得满足dis[1]dis[x+1]>dis[n]成立,x可以取到n。

解法:官方题解


如果我们知道每个点的dis值和最短路径树的话,方案是很容易构造的

我们可以采取贪心做法,一开始将1号点作为最短路径树的根,然后左边从2开始,右边从n开始,只要之前加入的点有边连向他们就加入

这样一个点加入的时间就是他的dis值,最短路径树上的父亲也可以确定,于是输出时非树边长度为n,树边长度为两个端点dis之差


#include
using namespace std;
const int maxn = 1e5+10;
int head[maxn], edgecnt;
void init(){edgecnt=0;memset(head,-1,sizeof(head));
}
struct edge{int to,next;
}E[maxn];
void add(int u, int v){E[edgecnt].to = v, E[edgecnt].next = head[u], head[u] = edgecnt++;
}
struct node{int u,v;
}q[maxn];
int T,n,m,dis[maxn],vis[maxn];int main()
{scanf("%d", &T);while(T--){init();memset(vis, 0, sizeof(vis));scanf("%d %d", &n,&m);for(int i&#61;1; i<&#61;m; i&#43;&#43;){int u,v;scanf("%d %d", &u,&v);q[i].u &#61; u, q[i].v &#61; v;add(u, v);}vis[1] &#61; vis[n] &#61; 1;int l&#61;1,r&#61;n,u;for(int i&#61;1; i<&#61;n; i&#43;&#43;){if(vis[l]&#61;&#61;0) u&#61;r--;else u&#61;l&#43;&#43;;dis[u] &#61; i;for(int j&#61;head[u]; ~j; j&#61;E[j].next){int v&#61;E[j].to;vis[v]&#61;1;}}
// for(int i&#61;1; i<&#61;n; i&#43;&#43;){
// printf("%d ", dis[i]);
// }
// printf("\n");for(int i&#61;1; i<&#61;m; i&#43;&#43;){if(dis[q[i].u] }






推荐阅读
  • 题目链接:http:poj.orgproblem?id1905题目大意:竹竿受热会膨胀。设其原长为L,受热膨胀后的长度L'(1+n*C)*L,其中n,C,L都是要输入的参数 ... [详细]
  • FFT+Manacher. ... [详细]
  • [二分图]JZOJ 4612 游戏
    DescriptionInputOutputSampleInput44#****#****#*xxx#SampleOutput5DataConstraint分析非常眼熟࿰ ... [详细]
  • Educational Codeforces Round 43 (Rated for Div. 2)
    EducationalCodeforcesRound43(RatedforDiv.2)https:codeforces.comcontest976A ... [详细]
  • SortalinkedlistinO(nlogn)timeusingconstantspacecomplexity.这道题属于人生中第一次对链表进行操作,首先,不同于C++中的st ... [详细]
  • P1144 最短路计数· BFS/dijkstra
    题解其实题目很简单不写了,这里总结一下从这道题目里学到的知识:当最短路的边权都是1时,dijkstraspfa就是BFS如果使用优先队列,内部结构是pair时 ... [详细]
  • 1、概念共享内存:共享内存是进程间通信中最简单的方式之一。共享内存允许两个或更多进程访问同一块内存,就如同malloc()函数向不同进程返回了指向同一个 ... [详细]
  • Logistic回归主要针对输入的数据是多个,输出则是有限的数值型,多为2个分类。涉及到以下方面:1.输出yw0+w1*x1+w2*x2+..(x1,x2,是样本的 ... [详细]
  • ProblemDescription:Readtheprogrambelowcarefullythenanswerthequestion.#pragmacomment(linker ... [详细]
  • 【链接】我是链接,点我呀:)【题意】在这里输入题意【题解】栈模拟一下就好。每个输出段后面都有一个空行。包括最后一个.【代码】#include< ... [详细]
  • #includestdafx.h#includeiostream#includesstream#includemap#includestring ... [详细]
  • 两种不同方式获取最大值与最小值代码1:#include&amp;amp;lt;stdio.h&amp;amp;gt;intmain(){floatscore[5], ... [详细]
  • 水题。。main.cppPATA1121CreatedbyPhoenixon2018224.Copyright©2018年Phoenix.Allrightsreserve ... [详细]
  • socket8 [命名管道]
    ::命名管道不但能实现同一台机器上两个进程通信,还能在网络中不同机器上的两个进程之间的通信机制。与邮槽不同,命名管道是采用基于连接并且可靠的传输方式,所以命名管道传输数据只能一对一 ... [详细]
  • #include#include#includeusingnamespacestd;精度误差constdoubleep ... [详细]
author-avatar
yymse17883
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有