1.已知有向图的邻接表求邻接矩阵

成绩 15 开启时间 2017年11月24日 星期五 00:00
折扣 0.8 折扣时间 2017年12月18日 星期一 00:00
允许迟交 关闭时间 2017年12月31日 星期日 00:00

题目:邻接表和邻接矩阵都是图的表示方法,它们相互之间也可以通过一定的方式进行转换。本题将给出一个有向图的邻接表,请将此邻接表转换成对应的邻接矩阵。

说明:每个点由除空格外的一个可显示字符表示,点的顺序由ASCII码表的顺序决定。

输入:
输入有若干行
每行的第一个字符表示起点,随后由空格隔开的若干字符表示终点

输出:
该邻接表对应的邻接矩阵(字符在邻接表中未出现表示不含该点)

  测试输入关于“测试输入”的帮助 期待的输出关于“期待的输出”的帮助 时间限制关于“时间限制”的帮助 内存限制关于“内存限制”的帮助 额外进程关于“{$a} 个额外进程”的帮助
测试用例 1 以文本方式显示
  1. a b c↵
  2. b a c↵
  3. c a b↵
以文本方式显示
  1. 0 1 1↵
  2. 1 0 1↵
  3. 1 1 0↵
1秒 64M 0
测试用例 2 以文本方式显示
  1. 0 2 0 1↵
  2. 1 0 1 2↵
  3. 2 1 0↵
以文本方式显示
  1. 1 1 1↵
  2. 1 1 1↵
  3. 1 1 0↵
1秒 64M 0
测试用例 3 以文本方式显示
  1. z c a y↵
  2. y z↵
  3. b a↵
  4. c z↵
  5. a y↵
以文本方式显示
  1. 0 0 0 1 0↵
  2. 1 0 0 0 0↵
  3. 0 0 0 0 1↵
  4. 0 0 0 0 1↵
  5. 1 0 1 1 0↵
1秒 64M 0

#include<cstdio> 
#include<string.h> 
#include<map> 
#include<algorithm> 
#include<vector> 
char biao[127][127]; 
int juzhen[127][127]; 
using namespace std; 
map<char,int> Point; 
map<char, int>Allpoints; 
typedef pair<char, int>PAIR; 
int cmp(const PAIR &x,const PAIR &y) 
{ 
   return x.first > y.first; 
} 
int main() 
{ 
    //freopen("1.txt", "r", stdin); 
    int row = 0; 
   int len = 0; 
   char Row[20]; 
  int index; 
 while (gets(biao[row])!=NULL) 
  { 
      int i; //int k=0; 
      for (i= 0; biao[row][i]; i++) 
      { 
          if (biao[row][i] != ' ') 
           { 
              char c = biao[row][i]; 
             if (Allpoints.count(c)==0) 
             Allpoints.insert(pair<char, int>(c,0)); 
              if (Point.count(c) == 0) 
                   Point.insert(pair<char,int>(c,0)); 
           } 
           
       } 
      if (len < Point.size())len = Point.size(); 
      Point.clear(); 
     row++; 
 } 
  map<char, int>::iterator it=Allpoints.begin(); int value = 0; 
    while (it != Allpoints.end()) 
  { 
      it->second = value++; 
       it++; 
  } 
  for (int i = 0; i < row; i++) 
   { 
      int a = Allpoints.find(biao[i][0])->second; 
     for (int j = 1; biao[i][j]; j++) 
       { 
          if (biao[i][j] != ' ') 
         { 
              int b = Allpoints.find(biao[i][j])->second; 
             juzhen[a][b]++; 
            } 
      } 
  } 
  len = Allpoints.size(); 
    for (int i = 0; i < len; i++) 
   { 
      for (int j = 0; j < len; j++) 
       { 
          if (j == len - 1) 
              printf("%d\n", juzhen[i][j]); 
          else 
               printf("%d ", juzhen[i][j]); 
       } 
  } 
  return 0; 
}  


  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
1.下列哪一种图的邻接矩阵是对称矩阵?( ) A.有向图 B.无向图 C.AOV网 D.AOE网 2.在边表示活动的AOE网中,关键活动的最迟开始时间( ) 最早开始时间。 A.> B.= D.= 3.带权有向图G用邻接矩阵A存储,则顶点i的入度等于A中( ) 。 A.第i行非∞的元素之和 B.第i列非∞的元素之和 C.第i行非∞且非0的元素个数 D.第i列非∞且非0的元素个数 4.在一个无向图中,所有顶点的度数之和等于所有边数的( ) 倍。 A.1/2 B. 1 C. 2 D. 4 5.对于一个具有n个顶点的无向图,若采用邻接矩阵存储,则该矩阵的大小是(D) A.n B.(n-1)2 C.n-1 D.n2 6. 如下有关拓扑序列的叙述,( ) 不对。 A. 拓扑序列包含了有向图的全部顶点 B. 有向有环图一定没有拓扑序列 C. 有向无环图不一定有拓扑序列 D. 拓扑序列不一定唯一 7. 对于描述工程的AOE网,( ) 说法正确。 A. 网中唯一的出度为零的顶点,称为源点 B. 网中唯一的入度为零的顶点,称为汇点 C. 关键路径是源点到汇点的最短路径 D. 关键路径可能有多条 8. 最小生成树指的是( ) 。 A. 由连通网所得到的边数最少的生成树 B. 由连通网所得到的顶点数相对较少的生成树 C. 连通网中所有生成树中权值之和为最小的成生树 D. 连通网的极小连通子图 9.一个有向图,共有n条弧,则所有顶点的度的总和为( ) 。 A.2n B.n C.n-1 D.n/2 二、填空题(每空3分,共9分)。 1.有n个顶点的连通图至少有___条边。有n个顶点的无向图至多有 条边。 2. 图的广度优先遍历算法中用到辅助队列,每个顶点最多进队 次。 3.在一个具有n个顶点的有向完全图中包含有 条边。 三、综合题(共23分)(答案可以在纸上笔画然后拍照贴图到文档的方式)。 1. (共7分)无向网如下: (1) 给出如图所示网的邻接矩阵表示(3分): (2) 画出最小生成树(4分): 2 .(共8分)已知一个连通图如图所示,试给出图的邻接矩阵和邻接链表存储示意图。 (1) 邻接矩阵存储示意图为(4分): (2) 邻接链表存储示意图为(4分): 3. (共8分)如图所示的带权无向图,请用克鲁斯卡尔算法给出最小生成树的解过程。 用克鲁斯卡尔算法最小生成树的过程为:

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

水之积也不厚,则其负大舟也无力

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值