怎么建设查询网站php,优化网站关键词,wordpress 主页模版,企业网站设计论文摘要怎么写【题目描述】 战争时期#xff0c;前线有n个哨所#xff0c;每个哨所可能会与其他若干个哨所之间有通信联系。信使负责在哨所之间传递信息#xff0c;当然#xff0c;这是要花费一定时间的#xff08;以天为单位#xff09;。指挥部设在第一个哨所。当指挥部下达一个命令…【题目描述】 战争时期前线有n个哨所每个哨所可能会与其他若干个哨所之间有通信联系。信使负责在哨所之间传递信息当然这是要花费一定时间的以天为单位。指挥部设在第一个哨所。当指挥部下达一个命令后指挥部就派出若干个信使向与指挥部相连的哨所送信。当一个哨所接到信后这个哨所内的信使们也以同样的方式向其他哨所送信。直至所有n个哨所全部接到命令后送信才算成功。因为准备充足每个哨所内都安排了足够的信使如果一个哨所与其他k个哨所有通信联系的话这个哨所内至少会配备k个信使。 现在总指挥请你编一个程序计算出完成整个送信过程最短需要多少时间。 【输入】 第1行有两个整数n和m中间用1个空格隔开分别表示有n个哨所和m条通信线路,且1≤n≤100。 第2至m1行每行三个整数i、j、k中间用1个空格隔开表示第i个和第j个哨所之间存在通信线路且这条线路要花费k天。 【输出】 一个整数表示完成整个送信过程的最短时间。如果不是所有的哨所都能收到信就输出-1。 【输入样例】
4 4
1 2 4
2 3 7
2 4 1
3 4 6
【输出样例】
11 floyd
#includebits/stdc.h
using namespace std;
typedef long long ll;
const int INF0x3f3f3f3f;
int n,m,d[110][110];
int main(){scanf(%d%d,n,m);memset(d,0x3f,sizeof d);for(int i0;im;i){int a,b,c;scanf(%d%d%d,a,b,c);d[a][b]d[b][a]min(d[a][b],c);}for(int k1;kn;k){for(int i1;in;i){for(int j1;jn;j){d[i][j]min(d[i][k]d[k][j],d[i][j]);}}}int res0;for(int i1;in;i){if(d[1][i]INF){puts(-1);return 0;}resmax(res,d[1][i]);}coutresendl;return 0;
} spfa
#includebits/stdc.h
using namespace std;
const int N110,M100000;
const int INF0x3f3f3f3f;
int n,m;
int h[N],e[M],ne[M],w[M],idx;
int dis[N],vis[N];
void add(int a,int b,int c){e[idx]b,w[idx]c,ne[idx]h[a],h[a]idx;
}
void spfa(){queueintq;for(int i1;in;i) dis[i]INF;q.push(1);vis[1]1;dis[1]0;while(q.size()){int tq.front();q.pop();vis[t]0;for(int ih[t];~i;ine[i]){int je[i];if(dis[j]dis[t]w[i]){dis[j]dis[t]w[i];if(!vis[j]){vis[j]1;q.push(j);}}}}
}
int main(){scanf(%d%d,n,m);memset(h,-1,sizeof h);for(int i0;im;i){int a,b,c;scanf(%d%d%d,a,b,c);add(a,b,c);add(b,a,c);}spfa();int res0;for(int i2;in;i){if(dis[i]INF){puts(-1);return 0;}resmax(res,dis[i]);}coutres;return 0;
}