感谢某位不知名dalao的博客,我才知道怎么解题....

最开始连题意都读错了....这个故事告诉我们要好好读题

描述 Description
图G是一个无向连通图,没有自环,并且两点之间至多只有一条边。我们定义顶点v,u最短路径就是从v到u经过边最少的路径。所有包含在v-u的最短路径上的顶点被称为v-u的Geodetic顶点,这些顶点的集合记作I(v, u)。
我们称集合I(v, u)为一个Geodetic集合。
例如下图中,I(2, 5)={2, 3, 4, 5},I(1, 5)={1, 3, 5},I(2, 4)={2, 4}。

给定一个图G和若干点对v,u,请你分别求出I(v, u)。

输入格式 Input Format
第一行两个整数n,m,分别表示图G的顶点数和边数(顶点编号1-n)
  下接m行,每行两个整数a,b表示顶点a和b之间有一条无向边。
  第m+2行有一个整数k,表示给定的点对数。
  下接k行,每行两个整数v,u。

输出格式 Output Format
  共k行,每行对应输入文件中每一个点对v,u,按顶点编号升序输出I(v, u)。同一行的每个数之间用空格分隔。

样例输入 Sample Input
5 6
1 2
1 3
2 3
2 4
3 5
4 5
3
2 5
5 1
2 4

样例输出 Sample Output

2 3 4 5
1 3 5
2 4

思路挺简单,floyed一遍算出最短路径

然后再循环判断并记录集合内的点即可,然而实现看起来挺鬼畜!?感谢数据量不大吧.....

 #include<bits/stdc++.h>
#define maxn 100
using namespace std;
struct node{
  int x,y;
}a[];
int n,m,kk;
int fu[maxn][maxn],s[maxn][maxn];
int dis[maxn][maxn][maxn];
int main(){
  cin>>n>>m;
  memset(fu,,sizeof(fu));
  for(int i=;i<=n;i++)
    fu[i][i]=;
  for(int i=;i<=m;i++){
    int xx,yy;
    cin>>xx>>yy;
    fu[xx][yy]=;fu[yy][xx]=;
  }
  cin>>kk;
  for(int i=;i<=kk;i++){
    cin>>a[i].x>>a[i].y;
  }
  for(int k=;k<=n;k++)
    for(int i=;i<=n;i++)
      for(int j=;j<=n;j++)
        if(fu[i][k]+fu[k][j]<fu[i][j])//floyed求最短路
          fu[i][j]=fu[i][k]+fu[k][j];
  for(int k=;k<=n;k++)
    for(int i=;i<=n;i++)
      for(int j=;j<=n;j++)
        if(fu[i][k]+fu[k][j]==fu[i][j])//因为已经完成松弛,所以如果得出如此条件判断,说明是最短路径
          dis[i][j][++s[i][j]]=k;//i,j固定位置,数组s[i][j]记录经过点的个数,dis数组存储顶点
  for(int i=;i<=kk;i++){
    for(int j=;j<=s[a[i].x][a[i].y];j++)//枚举集合内的点的个数
      cout<<dis[a[i].x][a[i].y][j]<<' ';
    cout<<endl;
  }
  return ;
}

Geodetic集合 c++的更多相关文章

  1. Geodetic集合

    图G是一个无向连通图,没有自环,并且两点之间至多只有一条边.我们定义顶点v,u最短路径就是从v到u经过边最少的路径.所有包含在v-u的最短路径上的顶点被称为v-u的Geodetic顶点,这些顶点的集合 ...

  2. 洛谷——P3906 Geodetic集合

    P3906 Geodetic集合 题目描述 图G是一个无向连通图,没有自环,并且两点之间至多只有一条边.我们定义顶点v,u最短路径就是从v到u经过边最少的路径.所有包含在v-u的最短路径上的顶点被称为 ...

  3. java基础集合经典训练题

    第一题:要求产生10个随机的字符串,每一个字符串互相不重复,每一个字符串中组成的字符(a-zA-Z0-9)也不相同,每个字符串长度为10; 分析:*1.看到这个题目,或许你脑海中会想到很多方法,比如判 ...

  4. .Net多线程编程—并发集合

    并发集合 1 为什么使用并发集合? 原因主要有以下几点: System.Collections和System.Collections.Generic名称空间中所提供的经典列表.集合和数组都不是线程安全 ...

  5. 一起学 Java(三) 集合框架、数据结构、泛型

    一.Java 集合框架 集合框架是一个用来代表和操纵集合的统一架构.所有的集合框架都包含如下内容: 接口:是代表集合的抽象数据类型.接口允许集合独立操纵其代表的细节.在面向对象的语言,接口通常形成一个 ...

  6. 编写高质量代码:改善Java程序的151个建议(第5章:数组和集合___建议75~78)

    建议75:集合中的元素必须做到compareTo和equals同步 实现了Comparable接口的元素就可以排序,compareTo方法是Comparable接口要求必须实现的,它与equals方法 ...

  7. java基础_集合List与Set接口

    List接口继承了Collection的方法  当然也有自己特有的方法向指定位置添加元素   add(索引,添加的元素); 移除指定索引的元素   remove(索引) 修改指定索引的元素   set ...

  8. Java基础Collection集合

    1.Collection是所有集合的父类,在JDK1.5之后又加入了Iterable超级类(可以不用了解) 2.学习集合从Collection开始,所有集合都继承了他的方法 集合结构如图:

  9. 轻量级“集合”迭代器-Generator

    Generator是PHP 5.5加入的新语言特性.但是,它似乎并没有被很多PHP开发者广泛采用.因此,在我们了解PHP 7对Generator的改进之前,我们先通过一个简单却显而易见的例子来了解下G ...

随机推荐

  1. 【题解】APIO2007动物园

    首先一眼感受到这题特别的性质……5个?这么小的,感觉就像是状压.脑补了一下,如果没有环的话应该很好做吧……有环怎么办?5真的很小的,随便乱搞肯定也可以.那就放在外面暴力枚举吧.然后正解就出来了. 然而 ...

  2. 【题解】SDOI2008莎拉公主的困惑

    挺有趣的恩:洛谷P2155 在纸上打打草稿,写出n!个数,从先往后,遇到不互质的就筛掉——发现一个奇妙的性质!:筛掉的次数.顺序好像是周期性出现的呢~ 而且更加妙妙的是,好像还是m!一轮..那么因为n ...

  3. [洛谷P3803] 【模板】多项式乘法(FFT, NTT)

    题目大意:$FFT$,给你两个多项式,请输出乘起来后的多项式. 题解:$FFT$,由于给的$n$不是很大,也可以用$NTT$做 卡点:无 C++ Code:  FFT: #include <cs ...

  4. Generator的基本用法

    Generator函数是一个状态机,封装了多个内部状态.执行一个Generator,会返回一个迭代器对象,通过迭代器对象,可以遍历Generator函数内部的每个状态.因此,Generator函数可以 ...

  5. 【ZJ选讲·BZOJ 5073】

    小A的咒语 给出两个字符串A,B (len<=105) 现在可以把A串拆为任意段,然后取出不超过 x 段,按在A串中的前后顺序拼接起来 问是否可以拼出B串. [题解]       ①如果遇 ...

  6. TYVJ 1035 / codevs 2171 棋盘覆盖

    Problem Description 给定一个n * m的棋盘,已知某些各自禁止放置,求最多往棋盘上放多少长度为2宽度为1的骨牌(骨牌不重叠) Input 第一行为n,m(表示有m个删除的格子)第二 ...

  7. mysql删除id最小的条目

    DELETE FROM 表1 WHERE Mid in (select Mid from (SELECT Min(Mid) Mid FROM 表1 c1) t1);

  8. iebackground+icon图标兼容

    <!DOCTYPE > <html> <head> <title>zepto</title> <meta name="nam ...

  9. JavaScript 知识点之escape()与decodeURI()

    解释:escape() 函数可对字符串进行编码,这样就可以在所有的计算机上读取该字符串. 语法:escape(string)参数描述string必需.要被转义或编码的字符串. 返回值:已编码的 str ...

  10. 使用e.target.dataset的问题

    在微信开发中我们经常会用到标签中属性的属性值,有时候我们通过 data-* 和 e.target.dateset 来获取属性值会出现一点小bug,即是调用出来的数据是undefined. 1)方案1– ...