谁能帮帮我看看这个代码的时间复杂度
  • 板块灌水区
  • 楼主DHeasy
  • 当前回复10
  • 已保存回复10
  • 发布时间2022/7/5 11:18
  • 上次更新2023/10/27 21:51:04
查看原帖
谁能帮帮我看看这个代码的时间复杂度
528325
DHeasy楼主2022/7/5 11:18

代码如下 \downarrow

#include<bits/stdc++.h>
#define ci int
#define cll long long
#define cull unsigned long long
#define cus unsigned short
#define cb bool
#define cd double
#define cf float
#define cs string
#define cc char
#define r0 return 0
#define in cin
#define out cout
using namespace std;
ci m,n,f[4000010],nxt[4000010],to[4000010],num,sum[1000010],mi[1000010];
cb b[1000010];
void add(ci _a,ci _b){
	to[++num]=_b;
	nxt[num]=f[_a];
	f[_a]=num;
}
void dfs(ci u,ci fa,ci ans){
	if(ans==mi[u]){
		sum[u]+=1;
		sum[u]%=100003;
	}
	else if(ans<mi[u]){
		mi[u]=ans;
		sum[u]=1;
	}
	for(ci i=f[u];i;i=nxt[i]){
		ci tp=to[i];
		if(tp==fa||ans+1>mi[tp]){
			continue;
		}
		dfs(tp,u,ans+1);
	}
}
int main(){
	in>>n>>m;
	for(ci i=1;i<=m;i++){
		ci x,y;
		in>>x>>y;
		add(x,y);
		add(y,x);
	}
	memset(mi,64,sizeof(mi));
	dfs(1,0,1);
	for(ci i=1;i<=n;i++){
		out<<sum[i]<<endl;
	}
	r0;
}

谢谢大家~

2022/7/5 11:18
加载中...