您的位置:首页 > 编程语言

USACO section2.3 Controlling Companies题解&代码

2015-02-15 05:59 330 查看
将每种可能都枚举一下就可以了…

我在test 9卡了很久…很容易漏掉一些控制关系…

避免这种情况的方法是验证所有不可能控制的情况,即排除法…

对于所有当前不能确认的关系(i,j)都重新验证即可

/*
ID:rainbow16
LANG:C++
TASK:concom
*/
#include<stdio.h>
#include<iostream>
using namespace std;
int n,m[105][105],c[105][105],t1,t2;
int main(void)
{
freopen("concom.in","r",stdin);
freopen("concom.out","w",stdout);
scanf("%d",&n);
for(int i=0;i<n;i++)
{
scanf("%d%d",&t1,&t2);
scanf("%d",&m[t1][t2]);
if(m[t1][t2]>50)
c[t1][t2]=1;
}
bool flag;
for(int i=1;i<=100;i++)
{
flag=true;
c[i][i]=1;
while(flag)
{
flag=false;
for(int j=1;j<=100;j++)
if(!c[i][j])
{
int s=0;
for(int k=1;k<=100;k++)
if(c[i][k])
s+=m[k][j];
if(s>50)
{
c[i][j]++;
flag=true;
}
}
}
}
for(int i=1;i<=100;i++)
for(int j=1;j<=100;j++)
if(c[i][j] && i!=j)
printf("%d %d\n",i,j);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: