Submission #1340956

#TimeUsernameProblemLanguageResultExecution timeMemory
1340956yusifmCyberland (APIO23_cyberland)C++20
0 / 100
27 ms5680 KiB
//#pragma GCC optimize("O3")
#include <bits/stdc++.h>
#include "cyberland.h"
const int sz=1000000,INF=1000000000;
using namespace std;
int node,res,ans;
vector<int>dist,parent,dists;
vector<vector<pair<int,int>>>nums;
void dijkstra(int num)
{
    priority_queue<pair<int,int>,vector<pair<int,int>>,greater<pair<int,int>>>pq;
    pq.push({0,num});
    dist[num]=0,parent[num]=-2;
    while(pq.size()!=0)
    {
        res=pq.top().second;
        pq.pop();
        if(dist[res]==INF)
        {
            for(int i=0;i<nums[res].size();i++)
            {
                if(dist[res]+nums[res][i].second<dist[nums[res][i].first])
                {
                    pq.push({dist[nums[res][i].first],nums[res][i].first});
                    dist[nums[res][i].first]=dist[res]+nums[res][i].second,parent[nums[res][i].first]=res;
                }
            }
        }
    }
}
double solve(int n,int m,int l,int p,vector<int>nums1,vector<int>nums2,vector<int>nums3,vector<int>nums4)
{
    nums.clear(),dist.clear(),parent.clear(),dists.clear(),nums.resize(n+1),dist.resize(n+1),parent.resize(n+1),fill(dist.begin(),dist.end(),INF);
    for(int i=0;i<nums2.size();i++)
    {
        if(nums4[i]!=0)
        {
            nums[nums1[i]].push_back({nums2[i],nums3[i]}),nums[nums2[i]].push_back({nums1[i],nums3[i]});
        }
        else
        {
            nums[nums1[i]].push_back({nums2[i],0}),nums[nums2[i]].push_back({nums1[i],0});
        }
    }
    dijkstra(0);
    if(dist[p]!=INF)
    {
        node=p;
        while(node!=-2)
        {
            if(nums4[node]==0)
            {
                ans-=nums3[node];
            }
            node=parent[node];
        }
    }
    else
    {
        ans=-1;
    }
    return ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...