poj 2240 floyd

来源:互联网 发布:完整性保护算法 编辑:程序博客网 时间:2024/06/03 17:05



第一次写floyd  ,核心代码只有5行。不过O(n^3) 


#include <iostream>#include <stdio.h>#include <string>#include <memory.h>using namespace std;double dis[35][35];char str1[40],str2[40],str[40][40];double rate;int n,m;const int inf=1e8;int findbuf(char *s){  for(int i=1;i<=n;i++)     if(strcmp(s,str[i])==0)         return i;}void floyd(){  for(int k=1;k<=n;k++)    for(int i=1;i<=n;i++)      for(int j=1;j<=n;j++)        if(dis[i][j]<dis[i][k]*dis[k][j])            dis[i][j]=dis[i][k]*dis[k][j];}int main(){     int cas=1;   while(scanf("%d",&n),n)   {     memset(dis,inf,sizeof(dis));     for(int i=1;i<=n;i++)     {        scanf("%s",str[i]);        dis[i][i]=1;     }     scanf("%d",&m);     for(int i=1;i<=m;i++)     {        scanf("%s%lf%s",str1,&rate,str2);        dis[findbuf(str1)][findbuf(str2)]=rate;     }     floyd();     int flag=0;     for(int i=1;i<=n;i++)       if(dis[i][i]>1)         flag=1;     if(flag)       printf("Case %d: Yes\n",cas++);     else        printf("Case %d: No\n",cas++);   }}


0 0
原创粉丝点击