文章

8

粉丝

37

获赞

0

访问

1.1k

头像
为啥老是编译出错啊,它提示数组定义有问题
我要提问
发布于2024年3月24日 08:40
阅读数 138

#include<iostream>
#include<vector>
#include<map>
#include<algorithm>
#include<math.h>
#include<string.h>
#include<utility>
#include<unordered_map>
using namespace std;
const int c=pow(10,3)+2;
int grid[c][c];
int visit[c];
void dfs(int n,int v){
	visit[v]=1;
	for(int i=1;i<=n;i++){
		if(grid[v][i]==1&&visit[i]==0)dfs(n,i);
	}
}
int main(){
	int n,m;
	while(cin>>n>>m&&n!=0){
	  fill(grid,grid+n*n,-1);
	  fill(visit,visit+n,0);
	  for(int i=1;i<=n;i++)grid[i][i]=1;
	  for(int i=0;i<m;i++){
	  	int x,y;
	  	cin>>x>>y;
	  	grid[x][y]=1;
	  	grid[y][x]=1;
	  }
	  dfs(n,1);
	  int flag=0;
	  for(int i=1;i<=n;i++){
	  	if(visit[i]==0){
	  		flag=1;
	  		break;
		  }
	  }
	  if(flag==0)printf("Yes\n");
	  else printf("No\n");
	}
}

 

登录查看完整内容


登录后发布评论

6 条评论
哈哈宝宝游泳 VIP
2024年3月24日 11:02

赞(0)
snake VIP
2024年3月24日 09:11

给二维数组赋值时,首地址必须写grid[0]。

fill(grid[0],grid[0]+c*c,-1);

赞(0)

哈哈宝宝游泳 : 回复 snake: #include<iostream> #include<vector> #include<map> #include<algorithm> #include<math.h> #include<string.h> #include<utility> #include<unordered_map> using namespace std; vector<vector<int> >grid(1002,vector<int>(1002,-1)); vector<int>visit(1002,0); void dfs(int n,int v,vector<vector<int> >&grid,vector<int>&visit){ visit[v]=1; for(int i=1;i<=n;i++){ if(grid[v][i]==1&&visit[i]==0)dfs(n,i,grid,visit); } } int main(){ int n,m; while(cin>>n>>m&&n!=0){ for(int i=1;i<=n;i++){ grid[i][i]=1; visit[i]=0; for(int j=1;j<=n;j++){ if(j!=i)grid[i][j]=-1; } } for(int i=0;i<m;i++){ int x,y; cin>>x>>y; grid[x][y]=1; grid[y][x]=1; } dfs(n,1,grid,visit); int flag=0; for(int i=1;i<=n;i++){ if(visit[i]==0){ flag=1; break; } } if(flag==0)printf("Yes\n"); else printf("No\n"); } } 大佬,可不可以帮忙看一下,这两个求是否联通的程序,为啥这个用vector数组就正确,上面那个改正完也不正确啊

2024年3月24日 09:57

snake : 回复 哈哈宝宝游泳: 是哪道题啊,给个题目编号

2024年3月24日 10:55

哈哈宝宝游泳 : 回复 snake: 不是这里边的题目,那个输入输出我发上面了,就是n个顶点,m条边,然后让你判断是否是联通图,但是我用vector和二维数组一个正确,一个错误,其他地方都一样

2024年3月24日 11:05

snake : 回复 哈哈宝宝游泳: 代码看起来没什么区别,多组输入的时候两个代码的初始化处理不一样,你fill的时候不要加到n,应该是n+1,或者直接+c,因为你for的时候下标从1开始,这里要注意。

2024年3月24日 11:18