码迷,mamicode.com
首页 > 编程语言 > 详细

顶点的度 (20 分) Java版

时间:2019-05-21 19:39:36      阅读:381      评论:0      收藏:0      [点我收藏+]

标签:+=   pre   输出   开始   print   scanner   ann   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("\n");
            for(int i=0;i<v;i++){
                if(i!=0)
                    System.out.print(" ");
                System.out.print(g.inDegree(i));
            }
            System.out.print("\n");
        }
    }

}

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;
    }
}

顶点的度 (20 分) Java版

标签:+=   pre   输出   开始   print   scanner   ann   java   测试   

原文地址:https://www.cnblogs.com/nonlinearthink/p/10901640.html

(1)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!