题目描述
假设有向图G采用邻接矩阵存储,要求删除某一个顶点i(包括与其相关连的边)。
输入
第一行第一个整数n表示顶点的个数(顶点编号为0到n-1),第二个数表示被删除的顶点编号,接下来是为一个n*n大小的整数矩阵,表示图的邻接关系。数字为0表示不邻接,1表示邻接。
输出
新的邻接矩阵,第一行表示顶点的个数;
第二行是剩余的结点编号;
接下来是为一个(n-1)*(n-1)大小的整数矩阵。
样例输入
5 2
0 1 0 1 0
0 0 1 1 0
0 0 0 0 0
0 0 0 0 0
1 0 0 1 0
样例输出
4
0134
0110
0010
0000
1010
#include<iostream>
using namespace std;
const int maxn=100;
int G[maxn][maxn],n;
int main()
{
int n,node;
cin>>n>>node;
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
cin>>G[i][j];
}
}
cout<<n-1<<endl;
for(int i=0;i<n;i++)
{
if(i!=node)
{
cout<<i;
}
}
cout<<endl;
for(int i=0;i<n;i++)
{
if(i==node) continue;//碰到要删除顶点,不输出即可
for(int j=0;j<n;j++)
{
if(j==node)
{
continue;
}
cout<<G[i][j];
}
cout<<endl;
}
}