社区讨论

有个问题

P3371【模板】单源最短路径(弱化版)参与者 1已保存回复 4

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
4 条
当前快照
1 份
快照标识符
@lo1uxuyw
此快照首次捕获于
2023/10/23 03:24
2 年前
此快照最后确认于
2023/11/03 03:54
2 年前
查看原帖
CPP
#include<bits/stdc++.h>
using namespace std;
int n,m,p,f[114514];
bool v[114514];
inline int read(){
	int x=0,f=1;
	char ch=getchar();
	while(ch<'0'||ch>'9'){
		if(ch=='-') f=-1;
		ch=getchar();
	}
	while(ch>='0'&&ch<='9') x=10*x+ch-'0',ch=getchar();
	return x*f;
}
struct dijk{
	int t,v;
};
struct Dijk{
	int d,x;
	bool operator>(const Dijk a)const{
		return d>a.d;
	}
};
vector<dijk>vec[114514];
priority_queue<Dijk,vector<Dijk>,greater<Dijk> >q;
int dijkstra(int s,int t){
	memset(f,0x3f,sizeof(f));
	f[s]=0;
	q.push((Dijk){0,s});
	while(!q.empty()){
		int a=q.top().x;
		q.pop();
		if(v[a]) continue;
		v[a]=1;
		for(auto g:vec[a]){
			int x=g.t,y=g.v;
			if(f[x]>f[a]+y){
				f[x]=f[a]+y;
				q.push((Dijk){f[x],x}); 
			}
		}
	}
}
int main(){
	n=read(),m=read(),p=read();
	while(m--){
		int x=read(),y=read(),z=read();
		vec[x].push_back((dijk){y,z});
	}
	dijkstra(p,n);
	for(int i=1;i<=n;i++){
		if(f[i]==0x3f3f3f3f) printf("2147483647 "); 
		else printf("%d ",f[i]);
	}
	return 0;
}
标准版的过了但弱化版的TLE?!

回复

4 条回复,欢迎继续交流。

正在加载回复...