poj 1511 正向 反向 构两个图
有向图 源点为1 求源点到其他各点的最短距离之和 再在其他点到源点的最短距离之和 再加起来 多源点一终点 只要反向构图就行了
Sample Input
2 //T
2 2 //结点数 边数
1 2 13 //u v w
2 1 33
4 6
1 2 10
2 1 60
1 3 20
3 4 10
2 4 5
4 1 50
Sample Output
46
210
堆优化: 跑了6S...
- # include <iostream>
- # include <cstdio>
- # include <cstring>
- # include <algorithm>
- # include <cmath>
- # include <queue>
- # define LL long long
- using namespace std ;
- const int INF=0x3f3f3f3f;
- const int MAXN=;
- struct qnode
- {
- int v;
- int c;
- qnode(int _v=,int _c=):v(_v),c(_c){}
- bool operator <(const qnode &r)const
- {
- return c>r.c;
- }
- };
- struct Edge
- {
- int v,cost;
- Edge(int _v=,int _cost=):v(_v),cost(_cost){}
- };
- vector<Edge>E[MAXN];
- bool vis[MAXN];
- int dist[MAXN];
- int u[MAXN] , v[MAXN] , w[MAXN] ;
- int n ;
- void Dijkstra(int start)//点的编号从1开始
- {
- memset(vis,false,sizeof(vis));
- for(int i=;i<=n;i++)dist[i]=INF;
- priority_queue<qnode>que;
- while(!que.empty())que.pop();
- dist[start]=;
- que.push(qnode(start,));
- qnode tmp;
- while(!que.empty())
- {
- tmp=que.top();
- que.pop();
- int u=tmp.v;
- if(vis[u])continue;
- vis[u]=true;
- for(int i=;i<E[u].size();i++)
- {
- int v=E[tmp.v][i].v;
- int cost=E[u][i].cost;
- if(!vis[v]&&dist[v]>dist[u]+cost)
- {
- dist[v]=dist[u]+cost;
- que.push(qnode(v,dist[v]));
- }
- }
- }
- }
- void addedge(int u,int v,int w)
- {
- E[u].push_back(Edge(v,w));
- }
- int main ()
- {
- // freopen("in.txt","r",stdin) ;
- int m ;
- int T ;
- scanf("%d" , &T) ;
- while (T--)
- {
- scanf("%d %d" , &n , &m) ;
- LL ans = ;
- int i , j ;
- for(i=;i<=m;i++)
- scanf("%d%d%d" , &u[i] , &v[i] , &w[i]) ;
- for(i=;i<=n;i++)
- E[i].clear();
- for(i=;i<=m;i++)
- addedge(u[i],v[i],w[i]) ;
- Dijkstra() ;
- for(i=;i<=n;i++)
- ans += dist[i] ;
- for(i=;i<=n;i++)
- E[i].clear();
- for(i=;i<=m;i++)
- addedge(v[i],u[i],w[i]) ;
- Dijkstra() ;
- for(i=;i<=n;i++)
- ans += dist[i] ;
- cout<<ans<<endl ;
- }
- return ;
- }
poj 1511 正向 反向 构两个图的更多相关文章
- POJ 1511 【heap+dij】
题意: t组样例. 每组有n个节点,有m条单向边. 有m组输入,每组a b c 表示从a到b的单向边的权值是c. 求解,从编号为1的节点出发,有n-1个人,要求他们分别到达编号从2到n的节点再返回,所 ...
- DIjkstra(反向边) POJ 3268 Silver Cow Party || POJ 1511 Invitation Cards
题目传送门 1 2 题意:有向图,所有点先走到x点,在从x点返回,问其中最大的某点最短路程 分析:对图正反都跑一次最短路,开两个数组记录x到其余点的距离,这样就能求出来的最短路以及回去的最短路. PO ...
- POJ-1511 Invitation Cards---Dijkstra+队列优化+前向星正向反向存图
题目链接: https://vjudge.net/problem/POJ-1511 题目大意: 给定节点数n,和边数m,边是单向边. 问从1节点出发到2,3,...n 这些节点路程和从从这些节点回来到 ...
- poj 1511(SPFA+邻接表)
题目链接:http://poj.org/problem?id=1511 思路:题目意思很简单就是要求源点到各点的最短路之和,然后再求各点到源点的最短路之和,其实就是建两个图就ok了,其中一个建反图.1 ...
- 【05】Nginx:TCP / 正向 / 反向代理 / 负载均衡
写在前面的话 在我们日常的工作中,不可能所有的服务都是简单的 HTML 静态网页,nginx 作为轻量级的 WEB 服务器,其实我们将它用于更多的地方还是作为我们网站的入口.不管你是后端接口,还是前端 ...
- <正向/反向>最大匹配算法(Java)
算法描述(正向): 给定最大词长n,待分词文本str,指针f=0,词典dic文档 1 取子串sub=str(f,f+n) 2 如果(遍历dic,有匹配sub) f++; 3 否则 n--; 4 注意: ...
- HDU 1535 Invitation Cards (POJ 1511)
两次SPFA. 求 来 和 回 的最短路之和. 用Dijkstra+邻接矩阵确实好写+方便交换.可是这个有1000000个点.矩阵开不了. d1[]为 1~N 的最短路. 将全部边的 邻点 交换. d ...
- POJ 1511 Invitation Cards / UVA 721 Invitation Cards / SPOJ Invitation / UVAlive Invitation Cards / SCU 1132 Invitation Cards / ZOJ 2008 Invitation Cards / HDU 1535 (图论,最短路径)
POJ 1511 Invitation Cards / UVA 721 Invitation Cards / SPOJ Invitation / UVAlive Invitation Cards / ...
- 使用netcat的正向 / 反向shell
reverse shell bind shell reverse shell描述图: 在此示例中,目标使用端口4444反向连接攻击主机.-e选项将Bash shell发回攻击主机.请注意,我们也可以在 ...
随机推荐
- java查看本机hostName可代表的ip列表【转】
java查看本机hostName可代表的ip列表 import java.net.InetAddress; public class ent { public static void main(Str ...
- 运用Zabbix实现内网服务器状态及局域网状况监控(4) —— Zabbix客户端安装
1. 创建用户 [root@zabbix ~]# groupadd zabbix [root@zabbix ~]# useradd -g zabbix zabbix 2. 安装zabbix_3.2 ...
- 运用Zabbix实现内网服务器状态及局域网状况监控(2) —— 环境配置
一.基本要求 Zabbix支持如下操作系统: LinuxIBM AIXFreeBSDNetBSDOpenBSDHP-UXMac OS XSolarisWindows: 2000, Server 200 ...
- Spring RedisTemplate操作-注解缓存操作(11)
@Service @CacheConfig(cacheNames="user") public class RedisAn { public Map<String, User ...
- Spark2.1.0安装
1.解压安装spark tar zxf spark-2.1.O-bin-2.6.0-CDH5.10.0.tgz 2.修改配置文件 vim /etc/profile export SPARK_HOME= ...
- 第15月第6天 ios UIScrollView不能响应TouchesBegin
1. 1:@property MyScrollView *scrollView; 2:给MyScrollView,增加类别:MyScrollView+Touch 3:在类别里实现下面三个方法: @im ...
- Database学习 - mysql 连接数据库 库操作
连接数据库 语法格式: mysql -h 服务器IP -P 端口号 -u用户名 -p密码 --prompt 命令提示符 --delimiter 指定分隔符 示例: mysql -h 127.0.0.1 ...
- jquery中选择checkbox拼接成字符串,然后到后台拆分取值
jquery中选择checkbox拼接成字符串,然后到后台拆分取值 js中的代码 $("#btn").click(function(){ var chenked=$("i ...
- python 错误: UnicodeDecodeError: 'ascii' codec can't decode byte 0xe4 in position 0: ordinal not in range(128)
参照:http://www.runoob.com/django/django-form.html 做了个表单提交和回显,但是报了以上错误 查资料发现是 python从request取值的是unicod ...
- linux新内核的freeze框架以及意义【转】
转自:https://blog.csdn.net/dog250/article/details/5303442 linux的电源管理发展非常迅速,比如在挂起到内存的时候,系统会冻结住所有的进程,也就是 ...