zoukankan      html  css  js  c++  java
  • 关联矩阵

    问题描述

      有一个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
     
    关联矩阵是描述图结构的一种方式,每一行代表每一个结点,比如第一行代表第一个结点,每一列
    代表一条边,比如第一列代表第一条边,也就是输入的每个第一列的数值,如果这个行的这个结点
    是相应边的开始,则赋值一,否则赋值0
    例如,第一组数据是1、2,那么1代表第一个结点,也就是第一行,因为是第一组数据所以代表是
    第一列,所以(1,1)=1是这个边的起始结点,第二个数据2代表第二个结点,并且也代表结束的顶点
    所以(2,1)=-1
    注:这里认为矩阵编号从1开始,实际程序中数组下标从1开始
    import java.lang.reflect.Array;
            import java.util.Arrays;
            import java.util.Scanner;
    
    public class Main {
        private Scanner scanner;
        public static void main(String[] args) {
            new Main();
        }
        public Main(){
            scanner = new Scanner(System.in);
            solve();
    
        }
    
        private void solve(){
            int n = scanner.nextInt();
            int m = scanner.nextInt();
            int [][] c = new int[n][m];
    
            for (int i = 0;i<m;i++){
                int a = scanner.nextInt();
                int b = scanner.nextInt();
                c[a-1][i] = 1;
                c[b-1][i] = -1;
            }
    
            for(int i = 0;i<n;i++){
                for(int j = 0;j<m;j++){
                    System.out.print(c[i][j] + " ");
                }
                System.out.println();
            }
        }
    }
  • 相关阅读:
    【转】Netty系列之Netty是什么
    【转】程序员技术练级攻略
    【转】Spring MVC 教程,快速入门,深入分析
    【转】Jqgrid学习之数据
    【转】Jqgrid学习之ColModel API
    【转】jqGrid学习之参数
    【转】jqGrid学习之安装
    go语言项目汇总
    33 Introducing the Go Race Detector
    32 Profiling Go Programs 分析go语言项目
  • 原文地址:https://www.cnblogs.com/zhanghaijie/p/8544532.html
Copyright © 2011-2022 走看看