7-1 顶点的度 (15 分)

7-1 顶点的度 (15 分)

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

输入格式:

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

输出格式:

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

输入样例:

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

结尾无空行

输出样例:

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

结尾无空行

#include<iostream>
#include<stdlib.h>
using namespace std;
#define max 100
typedef struct gnode *grap;
struct gnode{
    int n;
    int m;
    int g[max][max];
};
grap create(void){
    grap p=(gnode *)malloc(sizeof(struct gnode));
    p->n=0;
    p->m=0;
    return p;
}
void insert(grap mgrap,int a,int b){
    mgrap->g[a][b]=1;
}
void output(grap mgrap){
    int i,j,first=1;
    for(i=1;i<=mgrap->n;i++){
        int out=0;
        for(j=1;j<=mgrap->n;j++){
            if(mgrap->g[i][j])
                out++;
        }
        if(first==1){
            printf("%d",out);
            first=0;
        }else
            printf(" %d",out);
    }
    printf("\n");
    first=1;
    for(i=1;i<=mgrap->n;i++){
        int in=0;
        for(j=1;j<=mgrap->n;j++){
            if(mgrap->g[j][i])
                in++;
        }
        if(first==1){
            printf("%d",in);
            first=0;
        }else{
            printf(" %d",in);
        }
    }
}
void reset(grap mgrap){
    int i,j;
    for(i=1;i<=mgrap->n;i++){
        for(j=1;j<=mgrap->n;j++){
            mgrap->g[i][j]=0;
        }
    }
    mgrap->n=0;
    mgrap->m=0;
}
int main(){
    int m,n,i,j,a,b;
    grap mgrap=create();
    while(1){
        scanf("%d %d",&n,&m);
        if(n==0&&m==0)break;
        else{
            mgrap->n=n;
            mgrap->m=m;
            reset(mgrap);
            mgrap->n=n;
            mgrap->m=m;
            for(i=1;i<=m;i++){
                scanf("%d%d",&a,&b);
                insert(mgrap,a,b);
            }
            output(mgrap);
            reset(mgrap);
        }
        printf("\n");
    }
    return 0;
}

Guess you like

Origin blog.csdn.net/qq_51916951/article/details/121847430