此题用了floyd,思路非常简单,但是要注意两点:
- 注意读题,每个条件都得注意到
- 注意思路复杂不如思路简单,比如在取得每行最大值的时候,原来想先判断每一行是否有不可达的连通点,有则直接continue,再在连通点中判断最大值(错误原因暂时不想找了orz),正确方法是直接找出最大值,如果无穷大就直接不改变当前选取的动物就行了。
#include <stdio.h>
#include <string.h>
int N,M;
int graph[100][100];
//测试用
void print()
{
for(int i=0;i<N;++i)
{
for(int j=0;j<N;++j)
printf("%d\t",graph[i][j]);
printf("\n"