UOJ Logo

NOI.AC

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#214184#2680. Travelstawalr524ms1980kbC++111.9kb2024-11-15 22:15:002024-11-15 23:29:16

answer

#include<bits/stdc++.h>
using namespace std;
const int mn=305,mm=90005;
int n,m,l,qq;
int hd[mn],to[mn<<1],nxt[mm<<1],w[mm<<1],cnt=2;
void add(int x,int y,int z)
{
    nxt[cnt]=hd[x];
    to[cnt]=y;
    w[cnt]=z;
    hd[x]=cnt++;
}
int a[mn][mn],jy[mn][mn];
int vis[mn];
struct sta
{
    int a,jy,u;
}tmp;
struct cmp
{
    bool operator()(sta x,sta y)
    {
        if(x.jy!=y.jy)return x.jy>y.jy;
        return x.a<y.a;
    }
};
priority_queue<sta,vector<sta>,cmp> q;
void dijkstra(int s)
{
    // vis[s]=s;
    a[s][s]=l;
    jy[s][s]=0;
    q.push({l,0,s});
    while(!q.empty())
    {
        tmp=q.top();
        q.pop();
        if(vis[tmp.u]==s)continue;
        vis[tmp.u]=s;
        for(int i=hd[tmp.u];i;i=nxt[i])
        {
            int u=to[i];
            if(vis[u]==s)continue;
            if(a[s][tmp.u]<w[i])
            {
                if(jy[s][tmp.u]+1<jy[s][u] || (jy[s][tmp.u]+1==jy[s][u] && l-w[i]>a[s][u]))
                {
                    jy[s][u]=jy[s][tmp.u]+1;
                    a[s][u]=l-w[i];
                    q.push({a[s][u],jy[s][u],u});
                }
            }
            else
            {
                if(jy[s][tmp.u]<jy[s][u] || (jy[s][tmp.u]==jy[s][u] && a[s][tmp.u]-w[i]>a[s][u]))
                {
                    jy[s][u]=jy[s][tmp.u];
                    a[s][u]=l-w[i];
                    q.push({a[s][u],jy[s][u],u});
                }
            }
        }
    }
}
int main()
{
    // memset(a,0x3f,sizeof(a));
    memset(jy,0x3f,sizeof(jy));
    int x,y,z;
    scanf("%d%d%d",&n,&m,&l);
    for(int i=1;i<=m;i++)
    {
        scanf("%d%d%d",&x,&y,&z);
        if(z>l)continue;
        add(x,y,z);
        add(y,x,z);
    }
    for(int i=1;i<=n;i++)dijkstra(i);
    scanf("%d",&qq);
    while(qq--)
    {
        scanf("%d%d",&x,&y);
        if(jy[x][y]==0x3f3f3f3f)printf("-1\n");
        else printf("%d\n",jy[x][y]);
    }
}

Details

小提示:点击横条可展开更详细的信息

Test #1:

score: 0
Runtime Error

input:

300 1031 1000000000
277 94 1000000000
245 178 1000000000
161 263 1000000000
187 73 1000000000
219 36...

output:


result:


Test #2:

score: 0
Runtime Error

input:

300 604 1000000000
216 182 1000000000
171 212 1000000000
201 242 1000000000
181 93 1000000000
181 23...

output:


result:


Test #3:

score: 0
Runtime Error

input:

300 887 1000000000
74 50 1000000000
111 160 1000000000
27 44 1000000000
171 145 1000000000
202 223 1...

output:


result:


Test #4:

score: 0
Runtime Error

input:

300 1216 1000000000
272 88 1000000000
186 264 1000000000
132 72 1000000000
203 142 1000000000
126 79...

output:


result:


Test #5:

score: 0
Runtime Error

input:

300 1361 1000000000
65 156 1000000000
214 24 1000000000
217 129 1000000000
197 235 1000000000
154 17...

output:


result:


Test #6:

score: 5
Accepted
time: 24ms
memory: 1980kb

input:

300 294 1000000000
167 15 1000000000
21 161 1000000000
250 37 1000000000
32 169 1000000000
60 194 10...

output:

-1
-1
-1
-1
-1
10
-1
11
-1
11
7
9
-1
9
6
7
8
-1
-1
4
-1
10
5
7
-1
-1
11
4
6
-1
-1
5
4
1
-1
-1
-1
-1
...

result:

ok 89700 lines

Test #7:

score: 0
Runtime Error

input:

300 1415 1000000000
215 261 1000000000
208 170 1000000000
191 189 1000000000
103 293 1000000000
215 ...

output:


result:


Test #8:

score: 0
Runtime Error

input:

300 1851 1000000000
75 233 1000000000
285 187 1000000000
269 89 1000000000
245 240 1000000000
134 15...

output:


result:


Test #9:

score: 0
Runtime Error

input:

300 3491 1000000000
50 182 915397053
64 2 856684642
9 95 764580683
243 83 861656918
89 150 957931575...

output:


result:


Test #10:

score: 0
Runtime Error

input:

300 1945 1000000000
47 188 533599055
65 169 659762016
227 218 566867001
31 6 774365594
122 236 88888...

output:


result:


Test #11:

score: 0
Runtime Error

input:

300 2334 1000000000
26 91 919619085
219 184 684076993
140 146 629398252
290 115 620714562
183 200 73...

output:


result:


Test #12:

score: 0
Runtime Error

input:

300 1783 1000000000
125 59 913425325
201 103 599015877
260 43 836109177
295 13 548588010
289 12 8800...

output:


result:


Test #13:

score: 0
Runtime Error

input:

300 2716 1000000000
53 190 602802421
18 208 539008167
159 74 737081869
54 107 984931630
147 117 5946...

output:


result:


Test #14:

score: 0
Runtime Error

input:

300 1714 1000000000
120 169 762488498
47 114 721913063
256 146 933043076
109 115 853379190
2 119 623...

output:


result:


Test #15:

score: 0
Runtime Error

input:

300 1363 1000000000
112 73 623162757
258 123 797794754
132 144 698032064
177 36 915826033
199 297 92...

output:


result:


Test #16:

score: 0
Runtime Error

input:

300 3272 1000000000
138 129 925006622
105 6 708584786
254 96 692737494
293 82 747671739
31 126 53260...

output:


result:


Test #17:

score: 0
Runtime Error

input:

300 2173 1000000000
100 231 976052116
281 144 956967155
125 74 633252239
9 129 530570874
206 99 5197...

output:


result:


Test #18:

score: 0
Runtime Error

input:

300 435 1000000000
54 113 781774474
276 245 753387176
241 210 611204276
49 27 664064527
261 106 8293...

output:


result:


Test #19:

score: 0
Runtime Error

input:

300 1226 1000000000
63 220 854868106
174 159 653590287
197 51 532677187
185 108 804016280
284 147 75...

output:


result:


Test #20:

score: 0
Runtime Error

input:

300 787 1000000000
285 266 813321760
289 201 623167413
7 76 867785258
155 164 621115697
109 226 5419...

output:


result: