社区讨论
80分求助
P3385【模板】负环参与者 2已保存回复 1
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 1 条
- 当前快照
- 1 份
- 快照标识符
- @mi7cgc10
- 此快照首次捕获于
- 2025/11/20 19:24 4 个月前
- 此快照最后确认于
- 2025/11/20 19:24 4 个月前
spfa算法
吸氧前 4,8WA 9,10TLE
吸氧后 只有4,8WA
求dalao帮我看一下,感激不尽
CPP#include<bits/stdc++.h>
using namespace std;
int a,b,w,n,m,t,dist[2001]={},cnt[2001]={},flag=0;
bool visited[2001]={};
vector<int> son[2001],weight[2001];
list<int> l;
int main(){
cin>>t;
for(int k=1;k<=t;k++){
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++){
dist[i]=1e9;
}
memset(cnt,0,sizeof(cnt));
memset(visited,0,sizeof(visited));
for(int i=1;i<=n;i++){
son[i].clear();
weight[i].clear();
}
for(int i=1;i<=m;i++){
scanf("%d%d%d",&a,&b,&w);
if(w<0){
son[a].push_back(b);
weight[a].push_back(w);
}
else{
son[a].push_back(b);
son[b].push_back(a);
weight[a].push_back(w);
weight[b].push_back(w);
}
}
l.push_back(1);
dist[1]=0;
flag=0;
while(!l.empty() && flag==0){
int u=l.front();
for(int i=0;i<son[u].size();i++){
if(dist[son[u][i]]>dist[u]+weight[u][i]){
dist[son[u][i]]=dist[u]+weight[u][i];
if(!visited[son[u][i]]){
l.push_back(son[u][i]);
visited[son[u][i]]=1;
cnt[son[u][i]]++;
if(cnt[son[u][i]]==n){
cout<<"YE5"<<endl;
flag=1;
break;
}
}
}
}
l.pop_front();
visited[u]=0;
}
if(flag==0){
cout<<"N0"<<endl;
}
}
return 0;
}
回复
共 1 条回复,欢迎继续交流。
正在加载回复...