#include <stdio.h>
#include <string.h>
#include <iostream>
#include <algorithm>
#include <vector>
#include <queue>
#include <stack>
#include <set>
#include <map>
#include <string>
#include <math.h>
#include <stdlib.h>
#include <time.h>
using namespace std;
const int N=10+5;
const int inf=1<<15;
int main()
{
int n,i,j,k,m,p,s,l,g[N][N],is[N];
while(~scanf("%d",&n))
{
memset(is,0,sizeof(is));
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{
g[i][j]=inf;
}
for(i=0;i<n;i++)
{
scanf("%d%d",&m,&p);
is[i]=p;
for(j=0;j<m;j++)
{
scanf("%d%d",&s,&l);
g[i][s]=min(g[i][s],l);
}
}
for(k=0;k<n;k++)
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{
g[i][j]=min(g[i][j],g[i][k]+g[k][j]);
}
int ans=inf;
for(i=0;i<n;i++)
{
if(is[i]) ans=min(g[0][i],ans);
}
printf("%d
",ans);
}
return 0;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。http://xiang578.top/