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;
        }
    }
    
  • 相关阅读:
    设计模式(二)
    关于ICO
    js的中关于类的应用
    接口的实现顺序学习笔记[2]
    接口的继承学习笔记[1]
    设计模式(一)
    四种领域模型
    路径问题!!
    异步调用模式学习记录
    转:四人帮设计模式
  • 原文地址:https://www.cnblogs.com/nonlinearthink/p/10913743.html
Copyright © 2011-2022 走看看