将每种可能都枚举一下就可以了…
我在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;
}