首页 >> 大全

洛谷 P10P1343 地震逃生 改错

2023-11-03 大全 33 作者:考证青年

P1343 地震逃生 题目描述

汶川地震发生时,四川**中学正在上课,一看地震发生,老师们立刻带领x名学生逃跑,整个学校可以抽象地看成一个有向图,图中有\(n\)个点,\(m\)条边。1号点为教室,\(n\)号点为安全地带,每条边都只能容纳一定量的学生,超过楼就要倒塌,由于人数太多,校长决定让同学们分成几批逃生,只有第一批学生全部逃生完毕后,第二批学生才能从1号点出发逃生,现在请你帮校长算算,每批最多能运出多少个学生,\(x\)名学生分几批才能运完。

输入输出格式 输入格式:

第一行3个整数\(n,m,x(x;以下\(m\)行,每行三个整数\(a,b,c\)描述一条边,分别代表从\(a\)点到\(b\)点有一条边,且可容纳\(c\)名学生。

输出格式:

两个整数,分别表示每批最多能运出多少个学生,\(x\)名学生分几批才能运完。如果无法到达目的地(\(n\)号点)则输出“\(Orz\) \(Ni\) \(Jinan\) \(Saint\) \(Cow!\)”

很明显网络流的裸题。

前几天看到对前向星用\(x\) \(nor\) 1\(找反边,觉得很方便,遂用一下,用想到很久没打\)dinic$了,就决定打打(以前都是偷懒打EK的)

不过这样找反边\(head\)最开始时得赋\(-1\),而且边的边界也是-1

因为

\(x\) \(nor\) \(1=x+1\),\(x\)为偶

\(x\) \(nor\) \(1=x-1\),\(x\)为奇

得用上0

然后我.....

我是得多智障才这样,居然样例还对了...

还有一点,最后算答案是\((ans-1)/\)最大流\(+1\)

我没给那个\(ans\)减一下

code:

#include 
#include 
#include 
using namespace std;
const int N=204;
const int M=2004;
const int inf=0x3f3f3f3f;
struct Edge
{int w,to,next;
}edge[M*2];
struct node
{int cnt,u;
}S[N];
int n,m,X,cnt=-1,head[N];
int top=0;
void push(int cnt0,int u0) {S[++top].cnt=cnt0,S[top].u=u0;}
void pop() {top--;}
int read()
{int x=0;char c=getchar();while(c<'0'||c>'9') c=getchar();while(c>='0'&&c<='9') {x=x*10+c-'0';c=getchar();}return x;
}void add(int u,int v,int w)
{edge[++cnt].next=head[u],edge[cnt].to=v,edge[cnt].w=w,head[u]=cnt;edge[++cnt].next=head[v],edge[cnt].to=u,edge[cnt].w=0,head[v]=cnt;
}
int dep[N],used[N],ans=0;
queue  q;
bool bfs()
{memset(dep,0,sizeof(dep));while(!q.empty()) q.pop();q.push(1);dep[1]=1;while(!q.empty()&&q.front()!=n){int u=q.front();q.pop();for(int i=head[u];i!=-1;i=edge[i].next){int v=edge[i].to,w=edge[i].w;if(!dep[v]&&w){dep[v]=dep[u]+1;q.push(v);}}}return !q.empty();
}
int main()
{memset(head,-1,sizeof(head));n=read(),m=read(),X=read();int u,v,w;for(int i=1;i<=m;i++){u=read(),v=read(),w=read();add(u,v,w);}while(bfs()){memset(used,0,sizeof(used));top=0;push(head[1],1);while(top){if(S[top].u==n){int m_min=inf,id;for(int i=2;i<=top;i++)if(edge[S[i].cnt].w

2018.5.20

关于我们

最火推荐

小编推荐

联系我们


版权声明:本站内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 88@qq.com 举报,一经查实,本站将立刻删除。备案号:桂ICP备2021009421号
Powered By Z-BlogPHP.
复制成功
微信号:
我知道了