// 邻接矩阵 #include<stdio.h> #include<string.h> #define MAXN 100 int Edge[MAXN][MAXN]; int main() { // freopen("input.txt","r",stdin); // freopen("output.txt","w",stdout); int m,n,i,j,id,od,u,v; while(scanf("%d%d",&n,&m)!=EOF) { if(m==0&&n==0) break; memset(Edge,0,sizeof(Edge)); for(i=0; i<m; i++) { scanf("%d%d",&u,&v); Edge[u-1][v-1]=1; } for(i=0; i<n; i++) { od=0; for(j=0; j<n; j++) od+=Edge[i][j]; if(i==0) printf("%d",od); else printf(" %d",od); } printf("\n"); for(i=0; i<n; i++) { id=0; for(j=0; j<n; j++) id+=Edge[j][i]; if(i==0) printf("%d",id); else printf(" %d",id); } printf("\n"); } return 0; } //邻接表 #define MAXN 100 #include<stdio.h> struct arcnode //边结点 { int adjvex; //有向边的另一个邻接点的序号 arcnode *nextarc; //指向下一个边结点的指针 }; struct vnode // 顶点 { int data; // 顶点信息 arcnode *head1; // 出边表的表头指针 arcnode *head2; // 入边表的表头指针 }; struct lgraph //图的邻接表存储结构 { vnode vertexs[MAXN]; //顶点数组 int vexnum,arcnum; //顶点数和边数 } lg; void createlg() { int i; arcnode *pi; //用来构造边链表的边结点指针 int v1,v2; // 有向边的2个顶点 for(i=0; i<lg.vexnum; i++) lg.vertexs[i].head1=lg.vertexs[i].head2=NULL; for(i=0; i<lg.arcnum; i++) { scanf("%d%d",&v1,&v2); //输入一条边的起点和终点 v1--; v2--; pi=new arcnode; //假设有足够空间 pi->adjvex=v2; pi->nextarc=lg.vertexs[v1].head1; //插入链表 lg.vertexs[v1].head1=pi; pi=new arcnode; //假设有足够空间 pi->adjvex=v1; pi->nextarc=lg.vertexs[v2].head2; //插入链表 lg.vertexs[v2].head2=pi; } } void deletelg() { int i; arcnode *pi; for(i=0; i<lg.vexnum; i++) { pi=lg.vertexs[i].head1; while(pi!=NULL) { lg.vertexs[i].head1=pi->nextarc; delete pi; pi=lg.vertexs[i].head1; } pi=lg.vertexs[i].head2; while(pi!=NULL) { lg.vertexs[i].head2=pi->nextarc; delete pi; pi=lg.vertexs[i].head2; } } } int main() { //freopen("input.txt","r",stdin); int i,id,od; arcnode *pi; while(1) { lg.vexnum=lg.arcnum=0; scanf("%d%d",&lg.vexnum,&lg.arcnum); if(lg.vexnum==0) break; createlg(); for(i=0;i<lg.vexnum;i++) { od=0; pi=lg.vertexs[i].head1; while(pi!=NULL) { od++; pi=pi->nextarc; } if(i==0) printf("%d",od); else printf(" %d",od); } puts(""); for(i=0;i<lg.vexnum;i++) { id=0; pi=lg.vertexs[i].head2; while(pi!=NULL) { id++; pi=pi->nextarc; } if(i==0) printf("%d",id); else printf(" %d",id); } puts(""); deletelg(); } return 0; }
时间: 2024-10-25 13:25:30