zoukankan      html  css  js  c++  java
  • 试题 算法训练 关联矩阵

    资源限制
    时间限制:1.0s   内存限制:512.0MB
     
    问题描述
      有一个n个结点m条边的有向图,请输出他的关联矩阵。
     
    输入格式
      第一行两个整数n、m,表示图中结点和边的数目。n<=100,m<=1000。
      接下来m行,每行两个整数a、b,表示图中有(a,b)边。
      注意图中可能含有重边,但不会有自环。
     
    输出格式
      输出该图的关联矩阵,注意请勿改变边和结点的顺序。
     
    样例输入
    5 9
    1 2
    3 1
    1 5
    2 5
    2 3
    2 3
    3 2
    4 3
    5 4
     
    样例输出
    1 -1 1 0 0 0 0 0 0
    -1 0 0 1 1 1 -1 0 0
    0 1 0 0 -1 -1 1 -1 0
    0 0 0 0 0 0 0 1 -1
    0 0 -1 -1 0 0 0 0 1
     
    首先需要知道什么是关联矩阵,关联矩阵即用一个矩阵来表示各个点和每条边之间的关系
     
    1、对于一个无向图G,pxq, p为顶点的个数,q为边数。bij 表示在关联矩阵中点i和边j之间的关系。若点i和边j之间是连着的,则bij = 1. 反之,则bij = 0.
    注意,每一行值的总和为该点的度.
     
     
    2、对于有向图,若bij = 1,表示边j离开点i。 若bij = -1, 表示边j进入点i。 若bij = 0,表示边j和点i不相关联。
     
    了解了关联矩阵的概念之后问题就迎刃而解了.
     
     1 #include <iostream>
     2 #include <cstdio>
     3 #include <cstdlib>
     4 #include <cstring>
     5 #include <string>
     6 #include <cmath>
     7 #include <algorithm>
     8 #define INF 0x3f3f3f3f
     9 #define zero 1e-7
    10 
    11 using namespace std;
    12 typedef long long ll;
    13 const ll mod=1000000007;
    14 const ll max_n=1e5+5;
    15 int arr[105][1005]={0};
    16 int n, m;//结点数,边数 
    17 
    18 int main() {
    19     int a, b;
    20     cin>>n>>m;
    21     for(int i=1; i<=m; i++) {
    22         scanf("%d %d", &a, &b);
    23         arr[a][i]=1;
    24         arr[b][i]=-1;
    25     }
    26     for(int i=1; i<=n; i++) {
    27         for(int j=1; j<=m; j++) {
    28             printf("%2d ", arr[i][j]);//注意格式
    29         }
    30         printf("
    ");
    31     }
    32     return 0;
    33 }
    34 /*
    35 3 10
    36 1 2
    37 1 3
    38 3 2
    39 2 3
    40 3 2
    41 3 1
    42 1 3
    43 2 3
    44 2 1
    45 3 1
    46 
    47  1  1  0  0  0 -1  1  0 -1 -1 
    48 -1  0 -1  1 -1  0  0  1  1  0 
    49  0 -1  1 -1  1  1 -1 -1  0  1 
    50 */

    ※注意输出格式为%2d.

  • 相关阅读:
    跨浏览器的事件处理程序
    jQuery提交Form
    js 多种变量定义(对象直接量,数组直接量和函数直接量)
    Asp.net Eval 截取字符串
    sql执行顺序
    IDEA File Templates模板
    Vim快捷键大全(转)
    Rider+Unity+XLua环境配置
    一定要进行代码复查
    如何在ubuntu上面安装luasocket
  • 原文地址:https://www.cnblogs.com/wwqzbl/p/13534555.html
Copyright © 2011-2022 走看看