题意:给出几个集合,每个集合中有Si个点 且任意两个点的距离为ti,现在要求两个人分别从1和n出发,问最短多长时间才能遇到,且给出这些可能的相遇点;

取两个人到达某点时所用时间大的值 然后取最小的  若有多个结果 则按点的升序排列

解析:

比较裸的最短路 ,但坑在建图上,Si的和小于1e6  那么建的边肯定会超内存  所以压缩一下,把每个集合看作一个点  集合中的点到集合的距离为0  集合到集合中的点的距离为ti   即入为0 出为ti    然后普通最短路求就好了

spfa:

#include <iostream>
#include <cstdio>
#include <cstring>
#include <queue>
#include <cmath>
#include <algorithm>
#define mem(a,b) memset(a,b,sizeof(a))
using namespace std;
const int maxn = , INF = 0xfffffff;
typedef long long LL;
int n,m;
int d[maxn], head[maxn], vis[maxn],tran1[maxn], tran2[maxn];
struct time{
int sum,ix;
}Time[maxn]; int cmp(time a,time b)
{
if(a.sum == b.sum) return a.ix < b.ix;
return a.sum < b.sum;
} struct node{
int u,v,w,next;
}Node[maxn]; void add(int u,int v,int w,int i)
{
Node[i].u = u;
Node[i].v = v;
Node[i].w = w;
Node[i].next = head[u];
head[u] = i;
} void spfa(int s)
{
queue<int> Q;
fill(d,d+maxn,INF);
mem(vis,);
d[s] = ;
Q.push(s);
vis[s] = ;
while(!Q.empty())
{
int u = Q.front();Q.pop();
vis[u] = ;
for(int i=head[u]; i!=-; i=Node[i].next)
{
node e = Node[i];
if(d[e.v] > d[u] + e.w)
{
d[e.v] = d[u] + e.w;
if(!vis[e.v])
{
Q.push(e.v);
vis[e.v] = ;
}
}
}
}
}
int main()
{
int T;
int temp = ;
scanf("%d",&T);
while(T--)
{
mem(head,-);
mem(tran1,);
mem(tran2,);
mem(Time,);
int ans = ;
scanf("%d%d",&n,&m);
for(int i=;i<=m;i++)
{
int t,h,tmp;
scanf("%d%d",&t,&h);
while(h--)
{
scanf("%d",&tmp);
add(tmp,n+i,,ans++);
add(n+i,tmp,t,ans++);
}
}
spfa();
for(int i=;i<=n;i++)
tran1[i] = d[i];
spfa(n);
for(int i=;i<=n;i++)
tran2[i] = d[i];
for(int i=;i<n;i++)
{
Time[i].sum = max(tran1[i+],tran2[i+]);
Time[i].ix = i+;
}
sort(Time,Time+n,cmp);
LL res = Time[].sum;
printf("Case #%d: ",++temp);
if(res == INF)
{
printf("Evil John\n");
continue;
}
printf("%I64d\n",res);
for(int i=;i<n;i++)
{
if(res == Time[i].sum)
{
if(i > ) printf(" ");
printf("%d",Time[i].ix);
}
else
break;
}
printf("\n");
} return ;
}

hdu5521(Meeting)spfa 层次网络最短路的更多相关文章

  1. HDU5521 Meeting(dijkstra+巧妙建图)

    HDU5521 Meeting 题意: 给你n个点,它们组成了m个团,第i个团内有si个点,且每个团内的点互相之间距离为ti,问如果同时从点1和点n出发,最短耗时多少相遇 很明显题目给出的是个无负环的 ...

  2. Spfa(最短路求解)

    spfa(最短路求解) 模板: #include<iostream> #include<cstdio> #include<queue> #include<cs ...

  3. 基于bellman-ford算法使用队列优化的spfa求最短路O(m),最坏O(n*m)

    acwing851-spfa求最短路 #include<iostream> #include<cstring> #include<algorithm> #inclu ...

  4. ACM - 最短路 - AcWing 851 spfa求最短路

    AcWing 851 spfa求最短路 题解 以此题为例介绍一下图论中的最短路算法 \(Bellman\)-\(Ford\) 算法.算法的步骤和正确性证明参考文章最短路径(Bellman-Ford算法 ...

  5. hdu-5521 Meeting(最短路)

    题目链接: Meeting Time Limit: 12000/6000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others) ...

  6. HDU5521 Meeting 题解 最短路

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5521 题目大意: 有 \(n\) 个点 \(m\) 个集合,一个点可能处于若干个集合内,属于第 \(i ...

  7. [hdu5521 Meeting]最短路

    题意:有N个点,给定M个集合,集合Si里面的点两两之间的距离都为Ti,集合里面的所有点数之和<=1e6.有两个人分别在1和N处,求1个点使得两个人到这一点距离的最大值最小 思路:这题是裸的最短路 ...

  8. 【SPFA】 最短路计数

    最短路计数 [问题描述]   给出一个N个顶点M条边的无向无权图,顶点编号为1-N.问从顶点1开始,到其他每个点的最短路有几条. [输入格式]   输入第一行包含2个正整数N,M,为图的顶点数与边数. ...

  9. NOIP2017提高组Day1T3 逛公园 洛谷P3953 Tarjan 强连通缩点 SPFA 动态规划 最短路 拓扑序

    原文链接https://www.cnblogs.com/zhouzhendong/p/9258043.html 题目传送门 - 洛谷P3953 题目传送门 - Vijos P2030 题意 给定一个有 ...

随机推荐

  1. VS2013开发上位机并调用MSCcommm控件的方式

    此文章适合VC++串口通信入门 一.页面布局及添加控件 1, 安装好vs2010如图 2, 新建一个基于VC++的MFC项目comm 注意:点击ok,然后next,这时候要将application t ...

  2. SQL Server如何查看当前数据库连接的SPID

    使用SQL Server系统变量@@SPID即可: SELECT @@SPID

  3. (转)Ubuntu无法找到add-apt-repository问题的解决方法

    原文 网上查了一下资料,原来是需要 python-software-properties 于是 apt-get install python-software-properties 除此之外还要安装 ...

  4. 小白学Docker之基础篇

    系列文章: 小白学Docker之基础篇 小白学Docker之Compose 小白学Docker之Swarm PS: 以下是个人作为新手小白学习docker的笔记总结 1. docker是什么 百科上的 ...

  5. underscore.js常用的API

    过滤 var bigClassData = _.filter(data.Results, function (num) { return num.ClassType == 0; }); var fin ...

  6. C. Sequence Transformation

    链接 [http://codeforces.com/contest/1059/problem/C] 题意 给你一个n,有个序列有n个元素分别时1 ~ n,每次去掉一个元素输出剩下元素的GCD,使得最后 ...

  7. Java8之集合排序

    1,List<Map<String,Object>>格式 //排序 Comparator<Map<String, Object>> comparator ...

  8. 《Linux内核设计与实现》 第一二章学习笔记

    <Linux内核设计与实现> 第一二章学习笔记 第一章 Linux内核简介 1.1 Unix的历史 Unix的特点 Unix很简洁,所提供的系统调用都有很明确的设计目的. Unix中一切皆 ...

  9. 《Linux内核分析》课程第七周学习总结

    姓名:何伟钦 学号:20135223 ( *原创作品转载请注明出处*) ( 学习课程:<Linux内核分析>MOOC课程http://mooc.study.163.com/course/U ...

  10. 第二个spring

    由于第一个spring已经完成,我们现在进去第二个spring! 陈志棚:成绩的统筹 李天麟:界面音乐 徐侃:代码算法   plan好布局,分配任务,控制时间!