自己还是比较容易受外界影响,外面一有什么风吹草动,就没心思继续做题了,该死,就不能集中下精神 啊,
#include <iostream>
#include<cstdio>
#include<string.h>
using namespace std;
double a[35][35];
char s[35][100],s1[35],s2[35];
int n;
bool flag;
void Floyd()
{
for(int k=0;k<n;k++)
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
{
if(a[i][j]<a[i][k]*a[k][j])//此处加变乘,小于变大于
a[i][j]=a[i][k]*a[k][j];
}
int i;
for(i=0;i<n;i++)
if(a[i][i]>1)
{
flag=true;
break;
}
if(i==n)
flag=false;
}
int main()
{
int m,count=1;
double c;
while(scanf("%d",&n)&&n)
{
for(int i=0;i<n;i++)
scanf("%s",s[i]);
memset(a,0,sizeof(a));
scanf("%d",&m);
while(m--)
{
int i,j;
scanf("%s%lf%s",s1,&c,s2);
for(i=0;i<n;i++)
if(strcmp(s1,s[i])==0)
break;
for(j=0;j<n;j++)
if(strcmp(s2,s[j])==0)
break;
a[i][j]=c;
}
printf("Case %d: ",count++);
Floyd();
if(flag)
puts("Yes");
else
puts("No");
}
}