顶点的度 (20 分) Java版

Posted nonlinearthink

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了顶点的度 (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("\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版的主要内容,如果未能解决你的问题,请参考以下文章

leetcode刷题 64.数组的度——Java版

Vertex and FragmentShader顶点与片段着色器

Cg入门16:Fragment shader - 片段级光照

PTA乙级 (1049 数列的片段和 (20分))

METAL顶点/片段着色器“拦截”结果的最佳方法

初学算法之最基础的欧拉回路