题目链接:http://poj.org/problem?id=1511

题意:给出n个点和n条有向边,求所有点到源点1的来回最短路之和(保证每个点都可以往返源点1)

题目比较简单就是边和点的个数有点多所以可以用dijstra+优先队列这样复杂度就可以到v*logn

#include <iostream>
#include <cstring>
#include <string>
#include <vector>
#include <queue>
#include <cstdio>
#define inf 1000000000
using namespace std;
const int M = 1e6 + 10;
int n , m , a[M] , b[M] , c[M] , dis[M];
struct TnT {
int v , w;
};
struct cmp {
bool operator() (int x , int y) {
return dis[x] > dis[y];
}
};
vector<TnT>vc[M];
bool vis[M];
void dij(int s) {
priority_queue<int , vector<int> , cmp>q;
memset(vis , false , sizeof(vis));
TnT gg;
q.push(s);
dis[s] = 0;
while(!q.empty()) {
int m = q.top();
vis[m] = true;
for(int i = 0 ; i < vc[m].size() ; i++) {
gg = vc[m][i];
if(dis[m] + gg.w < dis[gg.v]) {
dis[gg.v] = dis[m] + gg.w;
if(!vis[gg.v]) {
vis[gg.v] = true;
q.push(gg.v);
}
}
}
q.pop();
}
}
int main() {
int t;
TnT gg;
scanf("%d" , &t);
while(t--) {
scanf("%d%d" , &n , &m);
for(int i = 1 ; i <= n ; i++) {
vc[i].clear();
dis[i] = inf;
}
for(int i = 1 ; i <= m ; i++) {
scanf("%d%d%d" , &a[i] , &b[i] , &c[i]);
gg.v = b[i] , gg.w = c[i];
vc[a[i]].push_back(gg);
}
dij(1);
long long sum = 0;
for(int i = 1 ; i <= n ; i++) {
sum += (long long)dis[i];
}
for(int i = 1 ; i <= n ; i++) {
vc[i].clear();
dis[i] = inf;
}
for(int i = 1 ; i <= m ; i++) {
gg.v = a[i] , gg.w = c[i];
vc[b[i]].push_back(gg);
}
dij(1);
for(int i = 1 ; i <= n ; i++) {
sum += (long long)dis[i];
}
printf("%lld\n" , sum);
}
return 0; }

poj 1511 Invitation Cards(dijstra优化)的更多相关文章

  1. 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 / ...

  2. POJ 1511 Invitation Cards(单源最短路,优先队列优化的Dijkstra)

    Invitation Cards Time Limit: 8000MS   Memory Limit: 262144K Total Submissions: 16178   Accepted: 526 ...

  3. [POJ] 1511 Invitation Cards

    Invitation Cards Time Limit: 8000MS   Memory Limit: 262144K Total Submissions: 18198   Accepted: 596 ...

  4. POJ 1511 Invitation Cards (spfa的邻接表)

    Invitation Cards Time Limit : 16000/8000ms (Java/Other)   Memory Limit : 524288/262144K (Java/Other) ...

  5. DIjkstra(反向边) POJ 3268 Silver Cow Party || POJ 1511 Invitation Cards

    题目传送门 1 2 题意:有向图,所有点先走到x点,在从x点返回,问其中最大的某点最短路程 分析:对图正反都跑一次最短路,开两个数组记录x到其余点的距离,这样就能求出来的最短路以及回去的最短路. PO ...

  6. POJ 1511 Invitation Cards (最短路spfa)

    Invitation Cards 题目链接: http://acm.hust.edu.cn/vjudge/contest/122685#problem/J Description In the age ...

  7. Poj 1511 Invitation Cards(spfa)

    Invitation Cards Time Limit: 8000MS Memory Limit: 262144K Total Submissions: 24460 Accepted: 8091 De ...

  8. (简单) POJ 1511 Invitation Cards,SPFA。

    Description In the age of television, not many people attend theater performances. Antique Comedians ...

  9. POJ 1511 Invitation Cards 链式前向星+spfa+反向建边

    Invitation Cards Time Limit: 8000MS   Memory Limit: 262144K Total Submissions: 27200   Accepted: 902 ...

  10. poj 1511 Invitation Cards(最短路中等题)

    In the age of television, not many people attend theater performances. Antique Comedians of Malidine ...

随机推荐

  1. MOCTF-MISC-writeup

    小菜鸡终于想要开通博客,要开始写东西了.第一次,献给了MOCTF MISC writeup,各种借鉴大哥们的writeup,写的不好的话,算了,后果自负(嘤嘤嘤). MOCTF平台地址:www.moc ...

  2. Struts完成用户新增操作

    点击新增客户出现该页面并完成前后台交互 代码逻辑分析: jsp 页面部分代码 <TABLE id=table_1 style="DISPLAY: none" cellSpac ...

  3. 学习vue感触

    大学还没毕业,想着先找工作,感觉计算机专业在老家做没有太大的发展,于是就在大学所在城市找了份工作.来到公司的第一天,带我的师傅让我学习vue.之前完全没有接触过框架,而且专业知识比较薄弱,前几天一直处 ...

  4. 佳木斯集训Day6

    T1还是个找规律啊,记下b的个数,然后直接*2%10000000009就好了 #include <bits/stdc++.h> #define mo 1000000007 using na ...

  5. java并发编程(二十五)----(JUC集合)LinkedBlockingDeque和ConcurrentLinkedDeque介绍

    Queue除了前面介绍的实现外,还有一种双向的Queue实现Deque.这种队列允许在队列头和尾部进行入队出队操作,因此在功能上比Queue显然要更复杂. LinkedBlockingDeque 我们 ...

  6. 【Kubernetes 系列二】从虚拟机讲到 Kubernetes 架构

    目录 什么是虚拟机? 什么是容器? Docker Kubernetes 架构 Kubernetes 对象 基础设施抽象 在认识 Kubernetes 之前,我们需了解下容器,在了解容器之前,我们得先知 ...

  7. 【Vue的路由,SPA概念】

    前言 本章是为了以后实现前端页面的搭建而写的, 重点在于如何实现 单页Web应用 因为相对于以前的传统多页面web,有很大的缺陷. 那么就必须了解一下Vue的路由设置. SPA的概念 总的而言,我们知 ...

  8. TensorFlow Data模块

    模块作用 tf.data api用于创建训练前导入数据和数据处理的pipeline,使得处理大规模数据,不同数据格式和复杂数据处理变的容易. 基本抽象 提供了两种基本抽象:Dataset和Iterat ...

  9. Stream和方法引用

    1.Stream流 1.for循环带来的弊端 在jdk8中,lambda专注于做什么,而不是怎么做 for循环的语法就是怎么做 for循环的循环体才是做什么 遍历是指每一个元素逐一进行处理,而并不是从 ...

  10. NLP系列文章:子词嵌入(fastText)的理解!(附代码)

    1. 什么是fastText 英语单词通常有其内部结构和形成⽅式.例如,我们可以从"dog""dogs"和"dogcatcher"的字⾯上推 ...