int main() { int m; while(scanf("%d%d",&n,&m)!=EOF) { char str[3]; getchar(); int x,y,c,top=-1; memset(vert,0,sizeof(vert)); while(m--) { scanf("%s%d%d",str,&x,&y);getchar(); if(str[0]=='P') { scanf("%d",&c);getchar(); Add_Edge(y,x,c,top); Add_Edge(x,y,-c,top); } else Add_Edge(y,x,1,top); } if(Spfa())puts("Reliable"); else puts("Unreliable"); } return 0; }
int main() { int n; while(scanf("%d",&n),n) { m=0; int top=-1,maxi=-1,mini=1000000000; memset(flag,-1,sizeof(flag)); memset(vert, 0,sizeof(vert)); for(int i=0;i<n;i++) { scanf("%s",str); int len=strlen(str); int u=(str[0]-'a')*26+str[1]-'a'; int v=(str[len-2]-'a')*26+str[len-1]-'a'; if(flag[u]==-1)flag[u]=m++; if(flag[v]==-1)flag[v]=m++; Add_Edge(flag[u],flag[v],len,top); //Add_Edge(flag[v],flag[u],len,top); if(len>maxi)maxi=len; if(len<mini)mini=len; } double l=mini,r=maxi,mid; // printf("%d\n",sum); while(r-l>1e-4) { mid=(l+r)/2; //printf("try l,r,mid %.2lf %.2lf %.2lf\n",l,r,mid); if(Spfa(mid)) l=mid; else r=mid; //system("pause"); } if(l==mini)puts("No solution."); else printf("%.2lf\n",l); } return 0; }
int main() { int n; while(scanf("%d",&n),n) { m=0; int top=-1,sum=0; memset(flag,-1,sizeof(flag)); memset(vert, 0,sizeof(vert)); for(int i=0;i<n;i++) { scanf("%s",str); int len=strlen(str); int u=(str[0]-'a')*26+str[1]-'a'; int v=(str[len-2]-'a')*26+str[len-1]-'a'; if(flag[u]==-1)flag[u]=m++; if(flag[v]==-1)flag[v]=m++; Add_Edge(flag[u],flag[v],len,top); //Add_Edge(flag[v],flag[u],len,top); sum+=len; } double l=0,r=sum,mid; // printf("%d\n",sum); while(r-l>1e-6) { mid=(l+r)/2; //printf("try l,r,mid %.2lf %.2lf %.2lf\n",l,r,mid); if(Spfa(mid)) l=mid; else r=mid; //system("pause"); } printf("%.2lf\n",l); } return 0; }
void solve(void) { Input(); int Ans = Spfa(); printf("%d\n", Ans >= inf ? -1 : Ans); }
inline void solve(void) { Input(); Spfa(); for (int i = k; i >= 0; i--) if (dis[i][t] != inf) {printf("%d\n", dis[i][t]); break;} }