| ||||||||||
| 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 | |||||||||
算是给大家一点思路#include<stdio.h>
#include<algorithm>
#include<string.h>
#include<iostream>
#include<string>
#include<map>
#define N 202
using namespace std;
int tu[N][N];
int n,m;
map<string,int> bb;
int e=1;
int biao[N],vis[N];
void dij(int st) {
for(int i=1; i<e; i++) biao[i]=0,vis[i]=0;
biao[st]=2<<20;
for(int i=1; i<e; i++) {
int minz=0,u;
for(int j=1; j<e; j++) if(!vis[j]&&minz<biao[j]) minz=biao[j],u=j;
vis[u]=1,biao[u]=minz;
//printf("%d %d\n",u,minz);
for(int j=1; j<e; j++) if(!vis[j]&&tu[u][j]!=0)
{
biao[j]=max(biao[j],min(biao[u],tu[u][j]));//这里就是重点了
}
//for(int j=1;j<e;j++) printf("%d%s",biao[j],j==e-1?"\n":" ");
}
return ;
}
int main() {
int ci=1;
while(scanf("%d%d",&n,&m)!=EOF&&n!=0&&m!=0) {
e=1;
bb.clear();
memset(tu,0,sizeof(tu));
string u,v;
int c;
for(int i=1; i<=m; i++) {
cin>>u>>v>>c;
if(bb[u]==0) bb[u]=e++;
if(bb[v]==0) bb[v]=e++;
if(tu[bb[u]][bb[v]]<c)tu[bb[u]][bb[v]]=tu[bb[v]][bb[u]]=c;
}
cin>>u>>v;
dij(bb[u]);
//printf("%d %d\n",bb[u],bb[v]);
printf("Scenario #%d\n",ci);
ci++;
printf("%d tons\n\n",biao[bb[v]]);
}
return 0;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator