hdu 3665 Seaside

来源:互联网 发布:腾讯淘宝商城 编辑:程序博客网 时间:2024/06/11 13:38
#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\n",ans);    }    return 0;}
0 0