社区讨论
数据越小RE越大
P1343地震逃生参与者 2已保存回复 1
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 1 条
- 当前快照
- 1 份
- 快照标识符
- @mi86548f
- 此快照首次捕获于
- 2025/11/21 09:15 4 个月前
- 此快照最后确认于
- 2025/11/21 09:15 4 个月前
为什么第2个点和第10个点RE了??
看到前面有大佬的讨论
也是RE了
好像是最大流没有判0
不过蒟蒻的我还是没有找出锅在哪
求大佬帮忙看看趴qwq
CPP看到前面有大佬的讨论
也是RE了
好像是最大流没有判0
不过蒟蒻的我还是没有找出锅在哪
求大佬帮忙看看趴qwq
#include<bits/stdc++.h>
#define maxm 201000
#define inf 0x7fffffff
#define int long long
using namespace std;
inline int read(){
int x=0,t=1; char ch=getchar();
while((ch<'0'||ch>'9')&&ch!='-') ch=getchar();
if(ch=='-') t=-1,ch=getchar();
while(ch<='9'&&ch>='0') x=x*10+ch-48,ch=getchar();
return x*t;
}
int n,m,x;
int u,v,w;
struct EDGE{
int depth;
int next,to,val;
}edge[maxm<<1];
int head[maxm],cnt;
inline void add(int u,int v,int w){
edge[++cnt].to=v;
edge[cnt].val=w;
edge[cnt].next=head[u];
head[u]=cnt;
}
inline bool bfs(){
queue<int> q;
while(!q.empty()) q.pop();
for(register int i=1;i<=n;++i) edge[i].depth=0;
edge[1].depth=1;
q.push(1);
while(!q.empty()){
int u=q.front(); q.pop();
for(register int i=head[u];i!=-1;i=edge[i].next){
int v=edge[i].to;
if(edge[i].val>0&&edge[v].depth==0){
edge[v].depth=edge[u].depth+1;
q.push(v);
}
}
}
if(edge[n].depth>0) return 1;
else return 0;
}
inline int dinic(int u,int dis){
if(u==n) return dis;
for(register int i=head[u];i!=-1;i=edge[i].next){
int v=edge[i].to;
if(edge[i].val>0&&edge[v].depth==edge[u].depth+1){
int minn=dinic(v,min(dis,edge[i].val));
if(minn>0){
edge[i].val-=minn;
edge[i^1].val+=minn;
return minn;
}
}
}
return 0;
}
signed main(){
cnt=-1;
memset(head,-1,sizeof(head));
n=read(); m=read(); x=read();
for(register int i=1;i<=m;++i){
u=read(); v=read(); w=read();
add(u,v,w); add(v,u,0);
}
int sum=0;
while(bfs()){
while(int num=dinic(1,inf)){
sum+=num;
}
}
printf("%lld ",sum);
int last=x%sum;
int go=x/sum;
if(last) go+=1;
printf("%lld\n",go);
return 0;
}
回复
共 1 条回复,欢迎继续交流。
正在加载回复...