ZOJ 2856 Happy Life

Problem Description

Do you know Utopia? It's a perfect world in which everyone leads a happy life.

A fairy wants to make a naive Utopia City. She studies the factors that have an impact on people's happiness and thinks that a person is happy if and only if all other persons' total "influence factor" on him (or her) is nonnegative. Each person has an influence factor on another person, which may be a positive integer or negative integer or 0. The influence factor is always symmetric, that is, if person A has an influence factor f on person B, it means that person B also has an "influence factor" f on A. So we can say the influence factor between person A and B is f without confusion. A person's influence factor on himself (or herself) is always 0. So let f(i, j) be the influence factor between person i and person j and person i's happiness(i) is well defined as follows:

Obviously there may be some persons who are not happy. Though the fairy cannot change any influence factor, she can give every person a property p(i) which is always +1 or -1. Under the fairy's magical definition, a person i's happiness(i)' is redefined as follow:

Person i feels happy if the value of happiness(i)' is nonnegative. But the fairy wonders whether she can give everyone a property to make all of them happy so that she can build her ideal naive Utopia successfully.

Since you're an ace programmer, the fairy asks you to help her to fulfill her dream. Can you help her?

Input

The input contains multiple test cases!

Each test case starts with an integer N (2 <= N <= 200), the number of persons in the city. After that there're N lines of integers and each line consists of N integers. The j-th integer of the i-th line of the matrix indicates the influence factor f(i,j) (-1000 < f(i,j) < 1000).

Proceed to the End Of File (EOF).

Output

For each test case, if the fairy fails, output a single line with "No" (without the quotations), otherwise output "Yes" (without the quotations) in the first line, followed by N lines, each line contains exactly a "+" (without the quotations) or a "-"(without the quotations) to indicate that the fairy should give the i-th person property +1 or -1 to fulfill her dream.

Sample Input

3
0 1 3
1 0 -1
3 -1 0
2
0 -10
-10 0

Sample Output

Yes
-
+
-
Yes
+
-

暴力,为什么不会出现No的情况呢?

#include <stdio.h>
#define MAXN 220

int n;
int g[MAXN][MAXN];
int ans[MAXN];

int main(){
    int i,j;
    while( scanf("%d",&n)!=EOF ){
        for(i=1; i<=n; i++){
            for(j=1; j<=n; j++){
                scanf("%d" ,&g[i][j]);
            }
            ans[i]=1;
        }
        int index=1;
        while(1){
            if(index==n+1){
                break;
            }
            int sum=0;
            for(i=1; i<=n; i++){
                sum+=ans[i]*g[index][i];
            }
            if(sum*ans[index]<0){
                ans[index]*=-1;
                index=1;
            }    
            else index++;
        }
        puts("Yes");
        for(int i=1; i<=n; i++){
            if(ans[i]<0)
                puts("-");
            else
                puts("+");
        }
    }
    return 0;
}
原文地址:https://www.cnblogs.com/chenjianxiang/p/3642711.html