请求测算记忆化广搜时间复杂度
查看原帖
请求测算记忆化广搜时间复杂度
556362
Unnamed114514楼主2021/10/19 23:24

RT:

#include<bits/stdc++.h>
#define inf 0x3f3f3f3f
using namespace std;
const int maxn=1e5+5;
struct node{
	int id,val;
};
vector<node> G[maxn];
int n,m,s,dis[maxn];
void BFS(int s){
	queue<node> q;
	memset(dis,inf,sizeof(dis));
	q.push(node({s,0}));
	while(!q.empty()){
		int x=q.front().id,y=q.front().val;
		q.pop();
		if(dis[x]<=y)
			continue;
		dis[x]=y;
		for(int i=0,l=G[x].size();i<l;i++)
			if(G[x][i].val+dis[x]<dis[G[x][i].id])
				q.push(node({G[x][i].id,G[x][i].val+dis[x]}));
	}
}
int main(){
	scanf("%d%d%d",&n,&m,&s);
	while(m--){
		int x,y,z;
		scanf("%d%d%d",&x,&y,&z);
		G[x].push_back(node({y,z}));
	}
	BFS(s);
	for(int i=1;i<=n;i++)
		printf("%d ",dis[i]);
	return 0;
}
2021/10/19 23:24
加载中...