int main()
{
    double x;
    int ji,i,f,k,m,xe,xs,flag;
    ji=0;
    while(scanf("%d",&n),n)
    { 
        ji++;
        getchar();
        chu();
        for(i=0;i<n;i++)
        {
            gets(ch[i]);
        }
        scanf("%d",&m);
        getchar();
        for(i=0;i<m;i++)
        {
            scanf("%s%lf%s",s,&x,e);
            xs=finds();
            xe=finde();
            if(-1==map[xs][xe]||x>map[xs][xe])
            {
                map[xs][xe]=x;
            }
        } 
        for(k=0;k<n;k++)
        {
            for(i=0;i<n;i++)
            {
                for(f=0;f<n;f++)
                {
                    if(-1!=map[i][k]&&-1!=map[k][f])
                    {
                        map[i][f]=maxx(map[i][f],map[i][k]*map[k][f]);
                    }
                }
            }
        }
        flag=0; 

        for(i=0;i<n;i++)
        {
            if(1<map[i][i])
            {
                flag=1;
                break;
            }
        }
        if(1==flag)
        {
            printf("Case %d: Yes\n",ji);
        }
        else
        {
            printf("Case %d: No\n",ji);
        }
    }
    return 0;
}
Esempio n. 2
0
t_graph* prim( t_graph* g, int s)
{
  t_graph *mst;
  int count, i;
  t_pQueue *pq;
  t_edge *min;
  if(g!=NULL && s>=0 && s < (g->v))
    {
      mst = new_graph(g->v);
      pq = new_priorityCap(g->e);
      for(i=0; i<g->v;i++)
	add_vertex(mst, g->vertices[i].name);
      mst->vertices[s].visited = TRUE;
      for(i=0; i< g->v;i++)
        {
	  if(i!=s &&  g->am[s][i]!=INF)
	    enqueue(pq, (void*) (finde(g, i ,s, g->am[s][i])),&eecomp) ;
	}
      count = 0;
      while (count<g->v)
	{
	  for(min=dequeue(pq, &eecomp);min!=NULL && !(mst->vertices[min->dst].visited);min=dequeue(pq, &eecomp))
	    ;
	  if(min!= NULL)
	    {
	      mst->vertices[min->dst].visited = TRUE;
	      add_edge(mst, min->src, min->dst, min->weight);
	      count++;
	      for(i=0; i< g->v;i++)
		{
		  if(i!=s &&  g->am[s][i]!=INF)
		    enqueue(pq, (void*) (finde(g, i, s, g->am[s][i])),&eecomp) ;
		}
	    }
	}
      free(pq);
      free(min);
      return mst;
    }
}