#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
using namespace std;
int n,m,dian[1010],hd[1010],ji,dui[100000],head,tail=1,cnt[1010],t;
bool biao[1010];
double bian[1010];
struct nod{
int xu,zhi,nxt;
}cun[5010];
inline void add(int a,int b,int c){
cun[++ji].xu=b;
cun[ji].zhi=c;
cun[ji].nxt=hd[a];
hd[a]=ji;
}
inline bool spfa(double da,int o){
memset(biao,0,sizeof(biao));
head=0;
tail=1;
bian[o]=0;
dui[tail++]=o;
biao[o]=1;
while(head<tail){
int zh=dui[++head];
biao[zh]=0;
for(int i=hd[zh];i;i=cun[i].nxt){
int qu=cun[i].xu,quan=cun[i].zhi;
if(bian[qu]>bian[zh]+quan-da){
bian[qu]=bian[zh]+quan-da;
if(!biao[qu]){
dui[tail++]=qu;
biao[qu]=1;
if(++cnt[qu]>n)return 1;
}
}
}
}
return 0;
}
inline int read(){
int date=0,w=1;char c=0;
while(!isdigit(c)){if(c=='-')w=-1;c=getchar();}
while(isdigit(c)){date=date*10+c-'0';c=getchar();}
return date*w;
}
int main(){
t=read();
for(int k=1;k<=t;++k){
memset(hd,0,sizeof(hd));
memset(cun,0,sizeof(cun));
ji=0;
n=read();
m=read();
for(int i=1;i<=m;++i){
int x=read(),y=read(),z=read();
add(x,y,z);
}
double l=-100000000,r=100000000;
while(r-l>1e-5){
int bb=0;
double mid=(l+r)/2;
memset(cnt,0,sizeof(cnt));
for(int i=1;i<=n;++i)
bian[i]=99999999;
for(int i=1;i<=n;++i)
if(!cnt[i])
if(spfa(mid,i)){
r=mid;
bb=1;
break;
}
if(bb==0)l=mid;
}
if(r<100000000)printf("Case #%d: %.2lf\n",k,l);
else printf("Case #%d: No cycle found.\n",k);
}
return 0;
}
有没有大佬修一下啊