prime模板

来源:互联网 发布:算法第四版答案 编辑:程序博客网 时间:2024/05/17 03:09
#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#define INF 0x3f3f3f3fusing namespace std;int map[500][500];//这里是用二维数组来记录两个点之间的关系 int n,m;int dijkstra(int dis[500][500]){    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][k]<INF&&dis[k][j]<INF)    if(dis[i][j]>dis[i][k]+dis[k][j])     /*这里的K是中间点,比如1->7我们可以这样走:1->6 + 6->7 此时的6就是中间点 那么这里的 for(k=0;k<n;k++)的意思就是,以K为中间点,松弛所有与K连接的点 */    dis[i][j]=dis[i][k]+dis[k][j];    return 0;}int main(){    int i,j;    int a,b;    while(scanf("%d%d",&n,&m)!=EOF)    {        memset(map,INF,sizeof(map));        for(i=0;i<m;i++)        {            scanf("%d%d",&a,&b);            map[a][b]=1;            map[b][a]=1;        }        dijkstra(map);        int flag=1;//这里的flag还是有点小作用的         for(i=0;i<n&&flag;i++)        for(j=0;j<n&&flag;j++)        if(map[i][j]>7)        flag=0;        if(flag)        printf("Yes\n");        else        printf("No\n");    }    return 0;}

0 0
原创粉丝点击