又是一道单源最短路,pta真的很喜欢这个考点哈
#include <iostream>
#include <cstring>
#include <map>
#define N 210
using namespace std;
map<string,int> mp;
string ed,str[N];
int n,k,s,t;
int num[N],d[N][N];
int vis[N],dist[N],path[N],cnt[N],city[N],sum[N];
//path路径,cnt路径条数,city路径上城市数,sum路径上敌军总数
void dijk(){
memset(dist,0x3f,sizeof dist);
for(int i=1;i<=n;i++){
if(d[s][i]){//初始可到达点
dist[i]=d[s][i];
path[i]=s;
cnt[i]=cnt[s]+1;
city[i]=city[s]+1;
sum[i]=sum[s]+num[i];
}
}
dist[s]=0;
vis[s]=1;
for(int k=1;k<n;k++){
int mind=0x3f3f3f3f,p=-1;
for(int i=1;i<=n;i++)
if(!vis[i]&&dist