1 solutions

  • 0
    @ 2024-6-8 17:05:02
    #include<bits/stdc++.h>
    using namespace std;
    const int maxn=1e6+40,inf=0x3f3f3f3f;//基本常数 
    struct node{int v,w;};
    int dist[maxn],n,m,s;
    bool visited[maxn];
    vector<node>graph[maxn];
    priority_queue<pair<int,int> >q;//xu yao yong de 
    void dijkstra(int s){
    	memset(dist,inf,sizeof(dist));memset(visited,0,sizeof(visited));//chu shi hua
    	dist[s]=0;q.push(make_pair(0,s));//xian jiang di yi ge dian cun chu jin lai
    	while(!q.empty()){
    		int u=q.top().second;//di yi ge dian de bian hao
    		q.pop();
    		if(visited[u]==true)continue;
    		visited[u]=true;
    		int size=graph[u].size();
    		for(int j=0;j<size;j++){
    			int v=graph[u][j].v,w=graph[u][j].w;
    			if(dist[u]+w<dist[v]){
    				dist[v]=dist[u]+w;q.push(make_pair(-dist[v],v));
    			}
    		}
    	}
    }
    int main(){
    	freopen("path.in","r",stdin);
    	freopen("path.out","w",stdout);
    	cin>>n>>m>>s;
    	dist[s]=0;
    	while(m--){
    		int u,v,w;
    		cin>>u>>v>>w;
    		graph[u].push_back({v,w});
    	}
    	dijkstra(s);
    	for(int i=1;i<=n;i++){
    		if(dist[i]==inf){
    			cout<<-1<<" ";
    		}
    		else cout<<dist[i]<<" ";//漏了这几句直接给我从AC干到30WA😕 
    	}
    	fclose(stdin);
    	fclose(stdout);
    	return 0;
    }
    
    • 1

    Information

    ID
    1101
    Time
    1000ms
    Memory
    256MiB
    Difficulty
    8
    Tags
    (None)
    # Submissions
    24
    Accepted
    6
    Uploaded By