您的位置:首页 > 其它

usaco 2.3 concom...

2013-01-28 14:42 316 查看
/*
ID:chenjiong
PROG:concom
LANG:C++
*/

#include <stdio.h>
#include <string.h>

const int MAXN = 101;

int map[MAXN][MAXN];
bool con[MAXN][MAXN];
int E;
bool flag;

int cal()
{
int i,j;
int sum = 0;
for ( i = 0; i < MAXN; i++)
for ( j = 0; j < MAXN; j++)
if ( con[i][j] )
sum += 1;
return sum;
}

void init()
{
flag = true;
memset(map,0,sizeof(map));

int i,j,v;
scanf("%d",&E);
while ( E-- )
{
scanf("%d%d%d",&i,&j,&v);
map[i][j] = v;
}
}

void solve()
{
int i,j,k;
memset(con,0,sizeof(con));

for ( i = 0; i < MAXN; i++)
con[i][i] = true;

for ( i = 0; i < MAXN; i++)
for ( j = 0; j < MAXN; j++)
if ( map[i][j] > 50 )
con[i][j] = true;

int pre = cal();

while ( true)
{
for ( i = 0; i < MAXN; i++)
{
for ( j = 0; j < MAXN; j++)
{
int sum = 0;
for ( k = 0; k < MAXN; k++)
{
if ( con[i][k] )
sum += map[k][j];
}
if ( sum > 50 )
con[i][j] = true;
}
}
if ( pre == cal() )
break;
else
pre = cal();
}
}

void print()
{
int i,j;
for ( i = 0; i < MAXN; i++)
{
for ( j = 0; j < MAXN; j++)
{
if ( con[i][j] && i != j )
printf("%d %d\n",i,j);
}
}
}

int main()
{
freopen("concom.in","r",stdin);
freopen("concom.out","w",stdout);

init();
solve();
print();
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: