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;
}
Example #4
0
	void solve(void) {
		Input();
		int Ans = Spfa();
		printf("%d\n", Ans >= inf ? -1 : Ans);
	}
Example #5
0
	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;}
	}