zoukankan      html  css  js  c++  java
  • 顶点的度 (20 分) Java解法

    顶点的度

    顶点的图。给定一个有向图,输出各顶点的出度和入度。

    输入格式:

    输入文件中包含多个测试数据,每个测试数据描述了一个无权有向图。每个测试数据的第一行为两个正整数n 和m,1 ≤ n ≤ 100,1 ≤ m ≤ 500,分别表示该有向图的顶点数目和边数,顶点的序号从1 开始计起。接下来有m 行,每行为两个正整数,用空格隔开,分别表示一条边的起点和终点。每条边出现一次且仅一次,图中不存在自身环和重边。输入文件最后一行为0 0,表示输入数据结束。

    输出格式:

    对输入文件中的每个有向图,输出两行:第1 行为n 个正整数,表示每个顶点的出度;第2行也为n 个正整数,表示每个顶点的入度。每两个正整数之间用一个空格隔开,每行的最后一个正整数之后没有空格。

    输入样例:

    7 9
    1 2
    2 3
    2 5
    2 6
    3 5
    4 3
    5 2
    5 4
    6 7
    0 0

    输出样例:

    1 3 1 1 2 1 0
    0 2 2 1 2 1 1

    代码:
    import java.util.Scanner;
    
    public class Main {
    
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            int v,e;
            int in,out;
            while(true){
                v = sc.nextInt();
                e = sc.nextInt();
                if(v==0&&e==0)
                    break;
                Graph g = new Graph(v,e);
                for(int i=0;i<e;i++){
                    in = sc.nextInt();
                    out = sc.nextInt();
                    g.insertEdge(in,out);
                }
                for(int i=0;i<v;i++){
                    if(i!=0)
                        System.out.print(" ");
                    System.out.print(g.outDegree(i));
                }
                System.out.print("
    ");
                for(int i=0;i<v;i++){
                    if(i!=0)
                        System.out.print(" ");
                    System.out.print(g.inDegree(i));
                }
                System.out.print("
    ");
            }
        }
    
    }
    
    class Graph{
        private int vertex;
        private int edge;
        private int graph[][];
    
        Graph(int v,int e){
            vertex = v;
            edge = e;
            graph = new int[v][v];
            for(int i=0;i<v;i++){
                for(int j=0;j<v;j++){
                    graph[i][j]=0;
                }
            }
        }
    
        void insertEdge(int in,int out){
            graph[in-1][out-1] = 1;
        }
    
        int outDegree(int theVertex){
            int cnt=0;
            for(int i=0;i<vertex;i++){
                cnt += graph[theVertex][i];
            }
            return cnt;
        }
    
        int inDegree(int theVertex){
            int cnt=0;
            for(int i=0;i<vertex;i++){
                cnt += graph[i][theVertex];
            }
            return cnt;
        }
    }
    
  • 相关阅读:
    Windows Store App 主题动画
    Windows Store App 过渡动画
    Windows Store App 控件动画
    Windows Store App 近期访问列表
    Windows Store App 文件选取器
    Windows Store App 访问应用内部文件
    Windows Store App 用户库文件分组
    Windows Store App 获取文件及文件夹列表
    Windows Store App 用户库文件夹操作
    Windows Store App 用户库文件操作
  • 原文地址:https://www.cnblogs.com/nonlinearthink/p/10913743.html
Copyright © 2011-2022 走看看