hdu 3665Seaside(简单floyd)
发布时间: 2013-11-02 19:41:10 作者: rapoo
hdu 3665Seaside(简单floyd)
51 01 12 02 33 11 14 1000 10 1
2
#include<iostream>#include<cstring>#include<cstdio>#define maxn 1e12using namespace std;long long dis[15][15];int issea[15],n;void floyd(){ int i,j,k; for(k=0;k<n;k++) for(i=0;i<n;i++) for(j=0;j<n;j++) if(dis[i][j]>dis[i][k]+dis[k][j]) dis[i][j]=dis[i][k]+dis[k][j];}int main(){ int i,j; long long ans; while(cin>>n) { ans=maxn; for(i=0;i<n;i++) { for(j=0;j<n;j++) dis[i][j]=maxn; dis[i][i]=0; } memset(issea,0,sizeof(issea)); //是否是海边 for(i=0;i<n;i++) { int a,b,c,d; scanf("%d%d",&a,&b); issea[i]=b; for(j=0;j<a;j++) { scanf("%d%d",&c,&d); dis[i][c]=d; } } floyd(); for(i=0;i<n;i++) if(issea[i]&&dis[0][i]<ans) ans=dis[0][i]; cout<<ans<<endl; } return 0;}