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;
    }
    

    Information

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