社区讨论
求助11pts,自己找不出问题
P2294[HNOI2005] 狡猾的商人参与者 2已保存回复 11
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 11 条
- 当前快照
- 1 份
- 快照标识符
- @mhjtz59r
- 此快照首次捕获于
- 2025/11/04 08:28 4 个月前
- 此快照最后确认于
- 2025/11/04 10:29 4 个月前
CPP
#include<bits/stdc++.h>
using namespace std;
#define int long long
int t,n,m,x,y,z,cnt[105],dis[105],vis[105];
struct node{
int id,x;
};
vector<node>g[105];
bool SPFA(int x){
memset(dis,0x3f,sizeof dis);
memset(vis,0,sizeof vis);
memset(cnt,0,sizeof cnt);
queue<int>q;
q.push(x);
dis[x]=0;
vis[x]=1;
while(!q.empty()){
int t=q.front();
q.pop();
vis[t]=0;
for(auto i:g[t]){
if(dis[i.id]>dis[t]+i.x){
dis[i.id]=dis[t]+i.x;
cnt[i.id]=cnt[t]+1;
if(cnt[i.id]==n) return 1;
q.push(i.id);
vis[i.id]=1;
}
}
}
return 0;
}
signed main(){
cin >> t;
while(t--){
cin >> n >> m;
for(int i=1;i<=n;i++)g[i].clear();
for(int i=1;i<=m;i++){
cin >> x >> y >> z;
g[y].push_back({x-1,-z});
g[x-1].push_back({y,z});
}
for(int i=1;i<=n;i++)g[n+1].push_back({i,0});
if(SPFA(n+1)) cout << "false\n";
else cout << "true\n";
}
return 0;
}
回复
共 11 条回复,欢迎继续交流。
正在加载回复...