}
if(u==root||flag[u]!=i)continue;//环的起点不为root,
for(int t=pre[u];t!=u;t=pre[t])
id[t]=res;//将环上的每个点用一个点代替
id[u]=res++;
}
}
if(res==0)
break;
for(i=0;i
for(i=0;i
e[i].w-=ms[e[i].v];//应为ms[]已经加到sum了,所以减去
e[i].u=id[e[i].u];
e[i].v=id[e[i].v];
}
nm=res;//新图节点的个数
root=id[root];//新图节点的根节点
}
return sum;
}
int main()
{
int i,j,n,m,sum,cont;
{
sum=0;
for(i=0;i
scanf("%d%d%d",&e[i].u,&e[i].v,&e[i].w);
e[i].v++;
e[i].u++;
sum+=e[i].w;
}
sum+=1;
for(i=0;i
e[m+i].u=0;
e[m+i].v=i+1;
e[m+i].w=sum;
}
num=n+m;
cont=liuzhu(0,n+1);
if(cont==-1||cont-sum>=sum)
printf("impossible\n");
else printf("%d %d\n",cont-sum,ops-m);
printf("\n");
}
return 0;
}