2 solutions

  • 0
    @ 2024-9-27 22:44:00

    BFS板Dijkstra歪解

    #include <bits/stdc++.h>
    using namespace std;
    #define st long long
    #define kl unsigned
    #define ab register
    #define und_map(a,b) unordered_map<a,b>
    #define kill(x) {cout<<x;exit(0);}
    #define all(x) x.begin(),x.end()
    const st N=3e5+7;
    int n,a[N],b[N],x[N];
    vector< pair<int,int> > g[N];
    st dist[N];
    queue<int> q;
    int main()
    {
    	cin>>n;
    	for(int i=1;i<n;i++) cin>>a[i]>>b[i]>>x[i];
    	memset(dist,0x3f,sizeof dist);
    	for(int i=1;i<n;i++)
    	{
    		g[i].push_back({i+1,a[i]}),g[i].push_back({x[i],b[i]});
    	}
    	dist[1]=0;
    	q.push(1);
    	while(not q.empty())
    	{
    		int cur=q.front();
    		q.pop();
    		for(int i=0;i<g[cur].size();i++)
    		{
    			if(dist[cur]+g[cur][i].second<dist[g[cur][i].first])
    			{
    				q.push(g[cur][i].first);
    				dist[g[cur][i].first]=dist[cur]+g[cur][i].second;
    			}
    		}
    	}
    	cout<<dist[n];
    	return 0*6308*1126*7502*3916;
    }
    
    • 0
      @ 2024-4-3 0:12:52

      • 1

      Information

      ID
      346
      Time
      1000ms
      Memory
      256MiB
      Difficulty
      4
      Tags
      (None)
      # Submissions
      41
      Accepted
      21
      Uploaded By