Orz
by liu006 @ 2023-07-16 11:09:29
你的第二个代码似乎CE了,j没定义
by lovely_fcukh @ 2023-07-16 11:16:15
这也A不了啊,CE了
by define_itn_int @ 2023-07-16 11:18:38
```cpp
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
long long n,m,timex[205],road[205][205],q,x[50005],y[50005],t[50005],tx,ty,fo[205][205],t_n,v_num[50005];
bool v[205];
int main(){
memset(fo,0x3f3f3f3f,sizeof(fo));
scanf("%lld%lld",&n,&m);
for(long long i=0;i<n;i++){
scanf("%lld",&timex[i]);
fo[i][i]=0;
}
for(long long i=0;i<m;i++){
scanf("%lld%lld",&tx,&ty);
scanf("%lld",&fo[tx][ty]);
fo[ty][tx]=fo[tx][ty];
}
scanf("%lld",&q);
for(long long i=0;i<q;i++){
scanf("%lld%lld%lld",&x[i],&y[i],&t[i]);
}
int j=0;
for(long long i=0;i<q;i++){
while(timex[j]<=t[i]&&j<n){
for(long long k=0;k<n;k++){
for(long long l=0;l<n;l++){
if(fo[k][l]>fo[k][j]+fo[j][l]){
fo[k][l]=fo[k][j]+fo[j][l];
}
}
}
j++;
}
if(timex[x[i]]>t[i]||timex[y[i]]>t[i]||fo[x[i]][y[i]]>=0x3f3f3f3f) printf("-1\n");
else printf("%lld\n",fo[x[i]][y[i]]);
}
return 0;
}
```
这才是AC代码
by liu006 @ 2023-07-16 11:20:05
不好意思 Orz
by liu006 @ 2023-07-16 11:20:26
for可以控制范围,while需要条件
by gladex @ 2023-07-16 11:22:18
**for要知道起终点;但while只需要知道条件,只有在满足条件的时候才执行**
by shb20111113 @ 2023-07-16 11:35:20
你仔细看看代码,for语句中每次你都把下标重设为了0,while却没有。我帮你改了一下第一个代码,现在能A了
```
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
long long n,m,timex[205],road[205][205],q,x[50005],y[50005],t[50005],tx,ty,fo[205][205],t_n,v_num[50005];
bool v[205];
int main(){
memset(fo,0x3f3f3f3f,sizeof(fo));
scanf("%lld%lld",&n,&m);
for(long long i=0;i<n;i++){
scanf("%lld",&timex[i]);
fo[i][i]=0;
}
for(long long i=0;i<m;i++){
scanf("%lld%lld",&tx,&ty);
scanf("%lld",&fo[tx][ty]);
fo[ty][tx]=fo[tx][ty];
}
scanf("%lld",&q);
for(long long i=0;i<q;i++){
scanf("%lld%lld%lld",&x[i],&y[i],&t[i]);
}
int j=0;
for(long long i=0;i<q;i++){
for(;timex[j]<=t[i]&&j<n;j++){
for(long long k=0;k<n;k++){
for(long long l=0;l<n;l++){
if(fo[k][l]>fo[k][j]+fo[j][l]){
fo[k][l]=fo[k][j]+fo[j][l];
}
}
}
}
if(timex[x[i]]>t[i]||timex[y[i]]>t[i]||fo[x[i]][y[i]]>=0x3f3f3f3f) printf("-1\n");
else printf("%lld\n",fo[x[i]][y[i]]);
}
return 0;
}
```
by lovely_fcukh @ 2023-07-16 11:39:00
@[liu006](/user/691247) (看楼上)
by y_kx_b @ 2023-08-05 10:05:59
谢谢julao们,此贴结
by liu006 @ 2023-08-08 17:28:50