zoukankan      html  css  js  c++  java
  • Codeforces Global Round 6

    借了钱,然后合并,问合并完最少还有几个人之间有金钱纠纷
    借的钱和欠的钱总数相等,直接O(n)的把每个人的钱都合并了,只管这个人欠了多少钱,不管欠的谁钱

    struct node{
    	int x,y;
    	ll z;
    
    };
    ll sum[MAXN];
    void work() {
    	vector<int> v1,v2;
    	int n,m;
    	cin >> n >> m;
    	for(int i = 1; i <= m; i++) {
    		int x,y;ll z;
    		cin >> x >> y >> z;
    		sum[x] -= z; sum[y] += z;
    	}
    	for(int i = 1; i <= n; i++) {
    		if(sum[i] < 0) {
    			v1.push_back(i);
    			sum[i] = -sum[i];
    		}
    		else if(sum[i] > 0) v2.push_back(i);
    	}
    	vector<node>ans;
    	int i = 0,j = 0;
    	while(i < v1.size() && j < v2.size()) {
    		int u = v1[i];
    		int v = v2[j];
    		node k;
    		k.x = u;
    		k.y = v;
    		k.z = min(sum[u],sum[v]);
    		ans.push_back(k);
    		ll tmp = min(sum[u],sum[v]);
    		sum[u] -= tmp;
    		sum[v] -= tmp;
    		if(sum[u] == 0) i++;
    		if(sum[v] == 0) j++;
    	}
    	cout << ans.size() << endl;
    	for(int i = 0; i < ans.size(); i++) {
    		cout << ans[i].x << ' ' << ans[i].y << ' ' << ans[i].z << endl;
    	}
    }
    
    int main() {
    	work();
    	return 0;
    }
    

    偷偷说李涵学长是个夯货

  • 相关阅读:
    UVA
    shell 之for循环几种写法
    关于用户的一些操作(useradd与adduser的区别)
    shell 大小关系 -eq -ne
    shell之seq
    脚本函数写法
    Springboot将数据存储到数据库当中
    后端传输数据到前端
    前端传输数据到后端
    JS onFocus和onBlur
  • 原文地址:https://www.cnblogs.com/ASLHZXY/p/12109053.html
Copyright © 2011-2022 走看看