红色警戒思考

天梯赛题目红色警戒,是一个图的连通性问题,大概可以考虑dfs邻接矩阵,dfs邻接表vector,并查集三种思路
#include 
using namespace std;
int a[1000][1000],n,sum=0,m;
int vis[55000];
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
void dfs(int s)
{
	vis[s]=1;
	for(int i=0;i>n>>m;
	fill(a[0],a[0]+1000*1000,INT_MAX);
	memset(vis,0,sizeof(vis));
	memset(lost,0,sizeof(lost));
	for(i=0;i>x;
		cin>>y;
		edge[i]=x;
		edg[i]=y;
		a[x][y]=1;
		a[y][x]=1;
	}
	int cnt=0;
	for(i=0;i>t;
	
	for(i=0;i>x;
		int h=x;
		lost[x]=1;
		fill(a[0],a[0]+1000*1000,INT_MAX);
		for(j=0;j

上面是通过邻接矩阵实现的dfs,下面通过邻接表vector实现

#include 
using namespace std;
vector a[550];
int n,sum=0,m;
int vis[550];
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
void dfs(int s)
{
	vis[s]=1;
	for(int i=0;i>n>>m;
for(i=0;i<550;i++)
{
	a[i].clear();
}
	memset(vis,0,sizeof(vis));
	memset(lost,0,sizeof(lost));
	for(i=0;i>x;
		cin>>y;
		edge[i]=x;
		edg[i]=y;
		a[x].push_back(y);
		a[y].push_back(x);
	}
	int cnt=0;
	for(i=0;i>t;
	for(i=0;i>x;
		int h=x;
		lost[x]=1;
		for(j=0;j<550;j++)
{
	a[j].clear();
}
		for(j=0;j

你可能感兴趣的:(C语言,天梯赛)