89分求助
查看原帖
89分求助
365086
2279975297qian楼主2022/5/6 21:08

求助,为什么#6RE了?

#include<bits/stdc++.h>
using namespace std;
/*struct node{
    int wei,fin;
    node(int _wei=0,int _fin=0){wei=_wei;fin=_fin;}
};
struct wa{
    int a[5000][2];
    int key;
    wa(int _key=0){key=_key;}
};
typedef vector<node> wa;*/
int tot=0,n,m,u,v,w,maxw[1505],dl[10000],head=0,tail=0,ans[1505][1505];

int pop(){
    if (tail>head){head++;return dl[head-1];}
    return -1;
}
void join(int x){
    dl[tail]=x;
    tail++;
}
void bfs(int aa){
    if (!(aa==-1)){
    	for (int i=1;i<=n;i++){
            if (!(ans[aa][i]==2147483647)){
                if (maxw[aa]+ans[aa][i]<maxw[i]){
                    maxw[i]=maxw[aa]+ans[aa][i];
					join(i);
                }
			}else continue;
	    }
	}
}
int main(){
    cin>>n>>m;
    for (int i=0;i<1503;i++){
        maxw[i]=2147483647;
        for (int j=0;j<1503;j++)ans[i][j]=2147483647;
    }
    for (int i=0;i<m;i++){
        cin>>u>>v>>w;
        if (-w<ans[u][v])
            ans[u][v]=-w;
    }
    join(1);
    maxw[1]=0;
    while (head<tail){
	    bfs(pop());}
    if(maxw[n]==2147483647)cout<<-1;
    else cout<<-maxw[n];
    return 0;
}```cpp
#include<bits/stdc++.h>
using namespace std;
/*struct node{
    int wei,fin;
    node(int _wei=0,int _fin=0){wei=_wei;fin=_fin;}
};
struct wa{
    int a[5000][2];
    int key;
    wa(int _key=0){key=_key;}
};
typedef vector<node> wa;*/
int tot=0,n,m,u,v,w,maxw[1505],dl[10000],head=0,tail=0,ans[1505][1505];

int pop(){
    if (tail>head){head++;return dl[head-1];}
    return -1;
}
void join(int x){
    dl[tail]=x;
    tail++;
}
void bfs(int aa){
    if (!(aa==-1)){
    	for (int i=1;i<=n;i++){
            if (!(ans[aa][i]==2147483647)){
                if (maxw[aa]+ans[aa][i]<maxw[i]){
                    maxw[i]=maxw[aa]+ans[aa][i];
					join(i);
                }
			}else continue;
	    }
	}
}
int main(){
    cin>>n>>m;
    for (int i=0;i<1503;i++){
        maxw[i]=2147483647;
        for (int j=0;j<1503;j++)ans[i][j]=2147483647;
    }
    for (int i=0;i<m;i++){
        cin>>u>>v>>w;
        if (-w<ans[u][v])
            ans[u][v]=-w;
    }
    join(1);
    maxw[1]=0;
    while (head<tail){
	    bfs(pop());}
    if(maxw[n]==2147483647)cout<<-1;
    else cout<<-maxw[n];
    return 0;
}
2022/5/6 21:08
加载中...