BFS TLE#6 玄关求助
查看原帖
BFS TLE#6 玄关求助
965334
1_1_1_1_1_1_楼主2024/3/24 14:38
#include<bits/stdc++.h>
#define mod 100003

using namespace std;

queue<int> q;
vector<int> g[1000001];
int n, m;
bool vis[1000001];//是否加入集合 
int d[1000001];//条数 
int len[1000001];//长度 

void input();
void init();
void bfs();
void output();

int main()
{
	input();
	init();
	bfs();
	output();
}

void input()
{
	cin >> n >> m;
	for(int i = 1; i <= m; i++)
	{
		int x, y;
		cin >> x >> y;
		if(x != y)
		{
			g[x].push_back(y);
			g[y].push_back(x);
		}
	}
}

void init()
{
	memset(len, 0x7f, sizeof(len));
	q.push(1);
	len[1] = 0;
	vis[1] = 1;
	d[1] = 1;
}

void bfs()
{
	while(!q.empty())
	{
		int u = q.front();
		q.pop();
		for(int i = 0; i < g[u].size(); i++)
		{
			int v = g[u][i];
			if(vis[v] == 0)
			{
				q.push(v);
				vis[v] = 1;
			}
			if(len[v] > len[u])
			{
				len[v] = len[u] + 1;
				d[v] += d[u];
				d[v] %= mod;
			}
		}
	}
}

void output()
{
	for(int i = 1; i <= n; i++)
	{
		cout << d[i] << endl;
	}
}
2024/3/24 14:38
加载中...