目录
2021年统考
图1:
图2:
#include <iostream>
#include<string.h>
#include<stdio.h>
#define MAXV 10
typedef struct {
int numVertices,numEdges;//顶点数和边数
char VerticesList[MAXV];
int Edge[MAXV][MAXV];
}MGraph;
int IsExistEL(MGraph G)
{
int record=0;
for(int i=0;i<G.numVertices;i++)
{
int tmp=0;
for(int j=0;j<G.numVertices;j++)
{
if(G.Edge[i][j]==1) tmp++;
}
if(tmp%2) record++;
}
if(record==0||record==2) return 1;
else return 0;
}
int main() {
//这个是第一张图,不存在
MGraph mg;
mg.numEdges=6;
mg.numVertices=4;
char name[]={'A','B','C','D'};
strncpy(name,mg.VerticesList,4);
for(int i=0;i<=3;i++)
for(int j=0;j<=3;j++) {
mg.Edge[i][j]=-1;
if(i==j) mg.Edge[i][j]=0;
}
for(int i=0;i<=3;i++)
for(int j=0;(j<=3);j++) { if(i!=j){mg.Edge[i][j] = 1; }}
for(int i=0;i<=3;i++)
for(int j=0;j<=3;j++) {
printf("%3d",mg.Edge[i][j]);
if(j==3) puts("");
}
if(IsExistEL(mg)) printf("exist\n");
else printf("not exist\n");
//第二张图,存在
MGraph mg2;
mg2.numEdges=3;
mg2.numVertices=4;
strncpy(name,mg2.VerticesList,4);
for(int i=0;i<=3;i++)
for(int j=0;j<=3;j++) {
mg.Edge[i][j]=-1;
if(i==j) mg.Edge[i][j]=0;
}
mg.Edge[0][1]=1,mg.Edge[1][2]=1,mg.Edge[2][3]=1;
for(int i=0;i<=3;i++)
for(int j=0;j<=3;j++) {
printf("%3d",mg.Edge[i][j]);
if(j==3) puts("");
}
if(IsExistEL(mg2)) printf("exist");
else printf("not exist");
return 0;
}
2023年统考
#include <iostream>
#include<string.h>
#include<stdio.h>
#define MAXV 10
typedef struct {
int numVertices,numEdges;//顶点数和边数
char VerticesList[MAXV];
int Edge[MAXV][MAXV];
}MGraph;
int printVertices(MGraph G)
{
int count=0;
for(int i=0;i<G.numVertices;i++)
{
int out=0,in=0;
for(int j=0;j<G.numVertices;j++)
{
if(G.Edge[i][j]==1) out++;
if(G.Edge[j][i]==1) in++;
}
if(out>in) count++;
}
return count;
}
int main() {
//这个是第一张图,不存在
MGraph mg;
mg.numEdges=5;
mg.numVertices=4;
char name[]={'a','b','c','d'};
strncpy(name,mg.VerticesList,4);
for(int i=0;i<=3;i++)
for(int j=0;j<=3;j++) {
mg.Edge[i][j]=-1;
if(i==j) mg.Edge[i][j]=0;
}
mg.Edge[0][1]=1,mg.Edge[0][3]=1;
mg.Edge[1][2]=1,mg.Edge[1][3]=1;
mg.Edge[2][3]=1;
for(int i=0;i<=3;i++)
for(int j=0;j<=3;j++) {
printf("%3d",mg.Edge[i][j]);
if(j==3) puts("");
}
printf("the number of K point is:%3d", printVertices(mg));
return 0;
}