dijkstra30pts求调,玄关
查看原帖
dijkstra30pts求调,玄关
935976
Amoribus楼主2024/8/7 07:42

WA1个点TLE6个点

#include<bits/stdc++.h>
using namespace std;
int n,m;
struct node{
	int p,w;
};
vector<node> a[100009];
int vis[100009];
long long dis[100009];
int ans=0;
void dfs(int u){
	for(int i=0;i<a[u].size();i++){
		int nxt=a[u][i].p;
		if(dis[nxt]<dis[u]+a[u][i].w) continue;
		dis[nxt]=dis[u]+a[u][i].w;
		//ans^=a[u][i].w;
		//cout<<ans<<endl;
		//if(nxt==v) {ans=pre^a[u][i].w;return;}
		dfs(nxt);
		//vis[nxt]=0;
	}
}
int main()
{
	//freopen("P2420_1.in","r",stdin);
	memset(dis,0x3f,sizeof(dis));
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	int s;
	cin>>n>>m>>s;
	for(int i=1;i<=m;i++){
		int u,v,w;
		cin>>u>>v>>w;
		a[u].push_back({v,w});
		//a[v].push_back({u,w});
	}
	dis[s]=0;
	dfs(s);
	for(int i=1;i<=n;i++){
		if(dis[i]==0x3f3f3f3f) cout<<"2147483647 ";
		cout<<dis[i]<<" ";
	}
	cout<<endl;
	return 0;
}
2024/8/7 07:42
加载中...