zoukankan      html  css  js  c++  java
  • codeforces 1369E DeadLee

    题意

    李的店里有(n)种美食,第(i)种美食有(a_i)个,李有(m)个朋友,第(i)个朋友喜欢第(x_i)和第(y_i)个两种不同的美食,每个朋友来到店会吃两种他喜欢的美食各一个,如果其中一种美食不够了就只吃另一种美食,李想让你帮他安排朋友到店的先后顺序,使他的每个朋友都至少吃到一种美食。

    分析

    (s_i)为每个朋友两种食物都吃到的情况下第(i)种食物需要的个数。

    若存在(s[i]<=a[i]),则无论如何喜欢这个食物的人都能得到满足,我们可以将喜欢这个食物的人往后放,并将他们喜欢的另一种食物(x)的需要个数(s[x])减一,继续上述过程,直到所有人的到店顺序都排好,如果对于任意(s[i])都有(s[i]>a[i]),则无解。

    #include<algorithm>
    #include<iostream>
    #include<cstring>
    #include<iomanip>
    #include<sstream>
    #include<cstdio>
    #include<string>
    #include<vector>
    #include<bitset>
    #include<queue>
    #include<cmath>
    #include<stack>
    #include<set>
    #include<map>
    #define rep(i,x,n) for(int i=x;i<=n;i++)
    #define per(i,n,x) for(int i=n;i>=x;i--)
    #define sz(a) int(a.size())
    #define rson mid+1,r,p<<1|1
    #define pii pair<int,int>
    #define lson l,mid,p<<1
    #define ll long long
    #define pb push_back
    #define mp make_pair
    #define se second
    #define fi first
    using namespace std;
    const double eps=1e-8;
    const int mod=1e9+7;
    const int N=2e5+10;
    const int inf=1e9;
    int n,m;
    int a[N],s[N],vis[N];
    vector<pii>g[N];
    int main(){
    	ios::sync_with_stdio(false);
    	//freopen("in","r",stdin);
    	cin>>n>>m;
    	rep(i,1,n){
    		cin>>a[i];
    	}
    	rep(i,1,m){
    		int x,y;
    		cin>>x>>y;
    		g[x].pb(mp(y,i));
    		g[y].pb(mp(x,i));
    		s[x]++;
    		s[y]++;
    	}
    	queue<int>q;
    	rep(i,1,n) if(s[i]<=a[i]){
    		q.push(i);
    	}
    	vector<int>ans;
    	while(!q.empty()){
    		int u=q.front();q.pop();
    		if(vis[u]) continue;
    		vis[u]=1;
    		for(pii x:g[u]){
    			if(vis[x.fi]) continue;
    			ans.pb(x.se);
    			if(--s[x.fi]<=a[x.fi]){
    				q.push(x.fi);
    			}
    		}
    	}
    	reverse(ans.begin(), ans.end());
    	if(sz(ans)==m){
    		puts("ALIVE");
    		for(int x:ans) printf("%d ",x);
    	}else{
    		puts("DEAD");
    	}
    	return 0;
    }
    
  • 相关阅读:
    stm32入门
    Shell入门
    广播与组播
    超时接收
    socket的四种IO模型
    网络套接字socket
    网络基础
    慢速系统调用被中断
    C# 程序运行时间计算
    HTTP的传输编码(Transfer-Encoding:chunked) / net::ERR_INVALID_CHUNKED_ENCODING
  • 原文地址:https://www.cnblogs.com/xyq0220/p/13216789.html
Copyright © 2011-2022 走看看