Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
Re:我已经被WA脑残了。求解释。In Reply To:我已经被WA脑残了。求解释。 Posted by:immiao at 2013-10-17 00:32:45 > #include <iostream> > #include <cstdio> > #include <cstring> > #include <algorithm> > > using namespace std; > const int maxn=(1<<30)-1; > > int main() > { > int M,N; > int rank[101]; > int v[101]; > int dis[101][101]; > int result[101]; > int record[101]={0}; > int i,j,k; > > > scanf("%d%d",&M,&N); > for (i=0;i<=N;i++) > for (j=0;j<=N;j++) > dis[i][j]=maxn; > for (i=1;i<=N;i++) > { > int k,num,price; > scanf("%d%d%d",&v[i],&rank[i],&k); > for (j=1;j<=k;j++) > { > scanf("%d%d",&num,&price); > dis[i][num]=price; > } > } > > > int total; > int minn=v[1]; > for (k=2;k<=N;k++) > { > > memset(record,0,sizeof(record)); > int x; > if (abs(rank[1]-rank[k])>M) > continue; > for (x=1;x<=N;x++) > { > if (abs(rank[k]-rank[x])>M || abs(rank[1]-rank[x])>M) > record[x]=1; > } > for (i=1;i<=N;i++) > result[i]=dis[1][i]; > int pos=1; > int min; > record[1]=1; > while (pos!=k) > { > min=maxn; > for (i=1;i<=N;i++) > { > if (!record[i] && result[i]<min) > { > min=result[i]; > pos=i; > } > } > record[pos]=1; > > if (min==maxn) > break; > for (i=1;i<=N;i++) > { > if (!record[i] && min+dis[pos][i]<=result[i] ) > { > result[i]=min+dis[pos][i]; > } > } > } > > total=0; > total+=result[k]; > total+=v[k]; > if (total<minn) > minn=total; > } > if (minn==maxn) > printf("%d\n",v[1]); > else > printf("%d\n",minn); > return 0; > } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator