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;
        }
    }
    
  • 相关阅读:
    Microsoft.mshtml到底是什么?
    编译.NET程序自动产生版本号的规则
    VB.NET(2005)中关于dll调用的错误信息(转)
    C# RichTextBox控件 滚动条 自动移至 最后一条记录处
    如何刪除richtextbox最後一行
    Using Hudson for C++/CMake/CppUnit
    让开发自动化: 选择持续集成服务器
    C#加载窗体错误
    各种CI工具对比表
    用 Hudson 实现 Visual Studio (C++) 项目的 daily build
  • 原文地址:https://www.cnblogs.com/nonlinearthink/p/10913743.html
Copyright © 2011-2022 走看看