2013年12月11日 星期三

[USACO] 2-3-5 Controlling Companies


/*
ID: 551100k1
LANG: C++
TASK: concom
*/
#include<stdio.h>
#include<string.h>
#include<vector>
#include<queue>
using namespace std;
struct P{
    int a,b;
}in;
vector<P> s[105];
vector<P> arr;
queue<int> que;
int v[105],add[105];
int main(){
    freopen("concom.in","r",stdin);
    freopen("concom.out","w",stdout);
    int n,i,j,flag,a,b,c,p;
    scanf("%d",&n);
    for(i=0;i<n;i++){
        scanf("%d%d%d",&a,&b,&c);
        s[a].push_back((P){b,c});
    }
    n=100;
    for(i=1;i<=n;i++){
        memset(v,0,sizeof(v));
        memset(add,0,sizeof(add));
        que.push(i);
        v[i]=1;
        while(que.size()){
            p=que.front();
            que.pop();
            for(j=0;j<s[p].size();j++){
                in=s[p][j];
                add[in.a]+=in.b;
            }
            for(j=1;j<=n;j++){
                if(add[j]>=50 && v[j]==0){
                    v[j]=1;
                    que.push(j);
                }
            }
        }
        for(j=1;j<=n;j++)
            if(v[j] && i!=j)
                arr.push_back((P){i,j});
    }
    for(i=0;i<arr.size();i++){
        printf("%d %d\n",arr[i].a,arr[i].b);
    }
}

沒有留言:

張貼留言