Code NK05DSRT - Sa mạc bị sai

Chào mọi người, em đang làm bài này lâu rồi mà vẫn bị WA :((
đây là link đề: https://oj.vnoi.info/problem/nk05dsrt

ý tưởng của em là sử dụng thuật toán dijkstra từ n để đến 1, có một hàm để tính
em không hiểu ý tưởng hay là code của em bị lỗi chỗ nào mà lại bị Wrong answer, mong anh chị nào xem giúp em với ạ
đây là code của em: https://ideone.com/Vaz5Xi

#include <bits/stdc++.h>

using namespace std;
long long q,m,n=0,c,u,v,w,price[222];
vector<pair<int,long long> >l[222];
struct cmp{
    bool operator()(pair<int,long long>x,pair<int,long long>y)
    {
        return x.second>y.second;
    }
};
priority_queue<pair<int,long long>,vector<pair<int,long long> >,cmp>s;
pair<int,long long>tam,temp;
int main()
{
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    cin>>q;
    while(q--)
    {
        for(int i=1; i<222; i++)
            l[i].clear();
        cin>>n>>m>>c;
        for(int i=1; i<=n; i++)
            price[i]=1e18;
        for(int i=1; i<=m; i++)
        {
            cin>>u>>v>>w;
            l[u].push_back({v,w});
            l[v].push_back({u,w});
        }
        price[n]=0;
        s.push({n,0});
        while(!s.empty())
        {
            tam=s.top();
            s.pop();
            if(tam.second!=price[tam.first])continue;
            u=tam.first;
            for(int i=0; i<l[u].size(); i++)
            {
                temp=l[u][i];
                long long need=tam.second,ca=temp.second;
                if(need+ca<=c)temp.second=need+ca;
                else
                {
                    if(c<=2*ca)continue;
                    long long t=(need+ca-c)/(c-2*ca);
                    if((need+c-ca)%(c-2*ca)!=0)t++;
                    temp.second=(2*t+1)*ca+need;
                }
                if(price[temp.first]>temp.second)
                {
                    price[temp.first]=temp.second;
                    s.push(temp);
                }
            }
        }
        cout<<price[1]<<'\n';
    }
    return 0;
}

nếu được thì có anh/chị nào có thể check giúp code em chưa được ở chỗ nào không ạ?, vì em có đọc qua sol, thấy đúng ý tưởng mà code kiểu gì cũng bị sai kết quả.
em xin cảm ơn trước.

Bạn vui lòng đưa trực tiếp bài làm của bạn lên đây, bọn mình không truy xuất được nội dung trên VNOI vì yêu cầu phải có tài khoản.

2 Likes

em đã đổi link sang ideone rồi ạ

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?