社区讨论
求调!!!
P2294[HNOI2005] 狡猾的商人参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @lvwjbolf
- 此快照首次捕获于
- 2024/05/07 23:17 2 年前
- 此快照最后确认于
- 2024/05/08 15:57 2 年前
Code:
CSHARP#include<bits/stdc++.h>
#define il inline
#define rg register
#define int long long
using namespace std;
struct solution{
int n,m,in[3],cnt,he[2105],dis[105],vis[105];
bool inq[105];
struct Edge{
int to,nxt,w;
}edge[2105];
il void add(rg int u,rg int v,rg int w){
edge[++cnt]={v,he[u],w};
he[u]=cnt;
}
il bool spfa(){
dis[n+1]=0;
rg queue<int>q;
q.push(n+1);
inq[n+1]=1;
while(!q.empty()){
rg int u=q.front();
q.pop();
inq[u]=0;
if(vis[u]>n)
return 0;
for(rg int i=he[u];i;i=edge[i].nxt){
rg int v=edge[i].to,w=edge[i].w;
++vis[v];
if(dis[u]+w<dis[v]){
dis[v]=dis[u]+w;
if(!inq[v]){
inq[v]=1;
q.push(v);
}
if(vis[v]>n)
return 0;
}
}
}
return 1;
}
il void reset(){
cnt=n=m=0;
memset(in,0,sizeof(in));
memset(he,0,sizeof(he));
memset(vis,0,sizeof(vis));
memset(inq,0,sizeof(inq));
memset(edge,0,sizeof(edge));
memset(dis,0x3f,sizeof(dis));
}
il int Main(){
cin>>n>>m;
for(rg int i=1;i<=m;++i){
cin>>in[0]>>in[1]>>in[2];
add(in[1],in[0]-1,in[2]);
add(in[0]-1,in[1],-in[2]);
}
for(rg int i=1;i<=n;++i){
add(n+1,i,0);
}
if(spfa())
cout<<"true"<<endl;
else
cout<<"false"<<endl;
return 0;
}
};
solution sdbsrnberhnsdvfd;
signed main(){
rg int w;
ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
cin>>w;
while(w--){
sdbsrnberhnsdvfd.reset();
sdbsrnberhnsdvfd.Main();
}
return 0;
}
回复
共 0 条回复,欢迎继续交流。
正在加载回复...