LuoguP1342请柬 【最短路/建反图】By cellur925
开始就想直接正向跑一遍Dij把到各点的最短路加起来即可,后来发现与样例少了些,于是再读题发现需要也求出学生们回来的最短路。
但是注意到本题是有向图,如果是无向图就好说。
那么我们怎么解决?可以建一个反图。于是本题就解决了==
Code
- #include<cstdio>
- #include<algorithm>
- #include<cstring>
- #include<queue>
- #define maxn 2000090
- using namespace std;
- typedef long long ll;
- int n,m,tot;
- int head[maxn],vis[maxn],hea[maxn];
- ll ans,dis[maxn],d[maxn];
- struct node{
- int to,next;
- int val;
- }edge[maxn],edg[maxn];
- void add(int x,int y,int z)
- {
- edge[++tot].to=y;
- edge[tot].next=head[x];
- head[x]=tot;
- edge[tot].val=z;
- }
- void add_nega(int x,int y,int z)
- {
- edg[++tot].to=y;
- edg[tot].next=hea[x];
- hea[x]=tot;
- edg[tot].val=z;
- }
- void dijkstra()
- {
- priority_queue<pair<int,int> >q;
- memset(dis,,sizeof(dis));
- q.push(make_pair(,));dis[]=;
- while(!q.empty())
- {
- int u=q.top().second;q.pop();
- if(vis[u]) continue;
- vis[u]=;
- for(int i=head[u];i;i=edge[i].next)
- {
- int v=edge[i].to;
- if(dis[v]>dis[u]+edge[i].val)
- {
- dis[v]=dis[u]+edge[i].val;
- if(!vis[v]) q.push(make_pair(-dis[v],v));
- }
- }
- }
- }
- void dijk()
- {
- priority_queue<pair<int,int> >q;
- memset(d,,sizeof(d));
- memset(vis,,sizeof(vis));
- q.push(make_pair(,));d[]=;
- while(!q.empty())
- {
- int u=q.top().second;q.pop();
- if(vis[u]) continue;
- vis[u]=;
- for(int i=hea[u];i;i=edg[i].next)
- {
- int v=edg[i].to;
- if(d[v]>d[u]+edg[i].val)
- {
- d[v]=d[u]+edg[i].val;
- if(!vis[v]) q.push(make_pair(-d[v],v));
- }
- }
- }
- }
- int main()
- {
- scanf("%d%d",&n,&m);
- for(int i=;i<=m;i++)
- {
- int x=,y=,z=;
- scanf("%d%d%d",&x,&y,&z);
- add(x,y,z);add_nega(y,x,z);
- }
- dijkstra();
- dijk();
- for(int i=;i<=n;i++)
- ans+=dis[i]+d[i]/*,printf("%d\n",dis[i])*/;
- printf("%lld",ans);
- return ;
- }
LuoguP1342请柬 【最短路/建反图】By cellur925的更多相关文章
- Luogu P1073 最优贸易【最短路/建反图】 By cellur925
题目传送门 这么经典的题目,还是看了lyd的题解....唉难过. 一句话题意:在一张点有全都的图上找一条从1到n的路径,存在两个点p,q(p<q),使val[q]-val[p]最大. 给出的图是 ...
- POJ3268 Silver Cow Party (建反图跑两遍Dij)
One cow from each of N farms (1 ≤ N ≤ 1000) conveniently numbered 1..N is going to attend the big co ...
- POJ 2438 Children’s Dining (哈密顿图模板题之巧妙建反图 )
题目链接 Description Usually children in kindergarten like to quarrel with each other. This situation an ...
- hdu 2647 Reward(拓扑排序+反图)
题目链接:https://vjudge.net/contest/218427#problem/C 题目大意: 老板要给很多员工发奖金, 但是部分员工有个虚伪心态, 认为自己的奖金必须比某些人高才心理平 ...
- 炸弹:线段树优化建边+tarjan缩点+建反边+跑拓扑
这道题我做了有半个月了...终于A了... 有图为证 一句话题解:二分LR线段树优化建边+tarjan缩点+建反边+跑拓扑统计答案 首先我们根据题意,判断出来要炸弹可以连着炸,就是这个炸弹能炸到的可以 ...
- POJ 2502 Subway ( 最短路 && 最短路建图 )
题意 : 给出二维平面上的两个点代表起点以及终点,接下来给出若干条地铁线路,除了在地铁线路上行进的速度为 40km/h 其余的点到点间都只能用过步行且其速度为 10km/h ,现问你从起点到终点的最短 ...
- [Luogu1342] 请柬 - 最短路模板
Description 在电视时代,没有多少人观看戏剧表演.Malidinesia古董喜剧演员意识到这一事实,他们想宣传剧院,尤其是古色古香的喜剧片.他们已经打印请帖和所有必要的信息和计划.许多学生被 ...
- LUOGU P1342 请柬(最短路)
传送门 解题思路 又是一道语文题,弄清楚题意之后其实就能想出来了,从1跑一遍最短路,把$dis[n]$加入答案.在建个反图跑一遍最短路,把$dis[n]_$加入最短路就行了.第一遍是去的时候,第二遍是 ...
- IndiaHacks 2016 - Online Edition (Div. 1 + Div. 2) E. Bear and Forgotten Tree 2 bfs set 反图的生成树
E. Bear and Forgotten Tree 2 题目连接: http://www.codeforces.com/contest/653/problem/E Description A tre ...
随机推荐
- PHP读取excel(6)
有时候我们只需要读取某些指定sheet,具体代码如下: <?php header("Content-Type:text/html;charset=utf-8"); //引入读 ...
- 带GPG签名的Git tag
原文地址http://airk000.github.io/git/2013/09/30/git-tag-with-gpg-key Git tag ###Tag用来做什么? Tag即标签,用以给项目仓储 ...
- UBUNTU安装PHP,即所谓得LAMP
Linux+Apache+Mysql/MariaDB+Perl/PHP/Python一组经常使用来搭建动态站点或者server的开源软件,本身都是各自独立的程序,可是由于常被放在一起使用.拥有了越来越 ...
- HDOJ_ How can I read input data until the end of file ?
Language C C++ Pascal To read numbers int n;while(scanf("%d", &n) != EOF){ ...} int n; ...
- vc6.0的一些快捷键
1.检测程序中的括号是否匹配 把光标移动到需要检测的括号(如大括号{}.方括号[].圆括号()和尖括号<>)前面,键入快捷键“Ctrl+]”.如果括号匹配正确,光标就跳到匹配的括号处 ...
- 细数AutoLayout以来UIView和UIViewController新增的相关API
本文转载至 http://www.itjhwd.com/autolayout-uiview-uiviewcontroller-api/ 细数AutoLayout以来UIView和UIViewContr ...
- MySQL 权限生效
用GRANT.REVOKE或SET PASSWORD对授权表施行的修改会立即被服务器注意到. 如果你手工地修改授权表(使用INSERT.UPDATE等等),你应该执行一个FLUSH PRIVILEGE ...
- HDU 5651xiaoxin juju needs help
xiaoxin juju needs help Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/ ...
- 配置webpack中externals来减少打包后vendor.js的体积
在日常的项目开发中,我们会用到各种第三方库来提高效率,但随之带来的问题就是打包后的vendor.js体积过大,导致加载时空白页时间过长,给用户的体验太差.为此我们需要减少vendor.js的体积,从本 ...
- Hihocoder #1098 : 最小生成树二·Kruskal算法 ( *【模板】 )
#1098 : 最小生成树二·Kruscal算法 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 随着小Hi拥有城市数目的增加,在之间所使用的Prim算法已经无法继续使用 ...