80分wa 4 8求调
  • 板块P1343 地震逃生
  • 楼主wyyqwq
  • 当前回复1
  • 已保存回复1
  • 发布时间2023/11/28 16:17
  • 上次更新2023/11/28 19:14:19
查看原帖
80分wa 4 8求调
467268
wyyqwq楼主2023/11/28 16:17
#include<bits/stdc++.h>
#define int long long
using namespace std;

const int N = 1e6 + 7;
const int inf = 1e11;
int head[N], dis[N], ecnt;
int n, m, x, s, t;

int pre[N], vis[N];
struct edge{
	int next, to, val;
}e[N];
void addedge(int u, int v, int w){
	e[ecnt].to = v;
	e[ecnt].val = w;
	e[ecnt].next = head[u];
	head[u] = ecnt ++;
}

bool bfs(){
	for(int i = 1; i <= n; i ++) vis[i] = 0;
	vis[s] = 1;
	dis[s] = inf;
	queue<int> q;
	q.push(s);
	while(!q.empty()){
		int u = q.front();
		q.pop();
		for(int i = head[u]; ~i; i = e[i].next){
			int v = e[i].to;
			if(vis[v] || e[i].val == 0) continue;
			dis[v] = min(dis[u], e[i].val);
			
			pre[v] = i;
			vis[v] = 1;
			q.push(v);
			if(v == t) return 1; 
		}
	}
	return 0;
}

int EK(){
	int ans = 0;
	while(bfs()){
		int x = t;
		while(x != s){
			int v = pre[x];
			e[v].val -= dis[t];
			e[v ^ 1].val += dis[t];
			x = e[v ^ 1].to;
		}
		ans += dis[t];
	}
	return ans;
}

signed main(){
	memset(head, -1, sizeof head);
	
	cin >> n >> m >> x;
	s = 1, t = n;
	for(int i = 1; i <= m; i ++){
		int a, b, c;
		cin >> a >> b >> c;
		addedge(a, b, c);
		addedge(b, a, 0);
	}
	int t = EK();
	if(t == 0){
		cout << "Orz Ni Jinan Saint Cow!" << endl;
		return 0;
	}
	cout << t << " " << ceil(x * 1.0 / t * 1.0);
	return 0;
}

80分 wa#4#8

2023/11/28 16:17
加载中...