ccf试题 高速公路

来源:互联网 发布:罗马安全吗 知乎 编辑:程序博客网 时间:2024/05/07 15:40

floyd,,,数组太大了,拿了60分,先粘上代码稍后学习。。。

#include <iostream>#include <stdio.h>#include <memory.h>#define NUM 1005 #define INF 0x3f3f3f3fusing namespace std;int n;int dis[NUM][NUM];int g[NUM][NUM];void Floyd(){    for(int i=1;i<=n;i++)    {        for(int j=1;j<=n;j++)        {            dis[i][j]=g[i][j];        }     }    for(int k=1;k<=n;k++)    {        for(int i=1;i<=n;i++)        {            for(int j=1;j<=n;j++)            {                if(dis[i][j]>dis[i][k]+dis[k][j])                {                    dis[i][j]=dis[i][k]+dis[k][j];                }            }        }     }}int m;int main() {    cin>>n;    cin>>m;    memset(g,INF,sizeof(g));    int a,b;    for(int i=0;i<m;i++)    {        cin>>a>>b;        g[a][b]=1;    }    Floyd();    int counter=0;    for(int i=1;i<=n;i++)    {        for(int j=i+1;j<=n;j++)        {            if(dis[i][j]!=INF&&dis[j][i]!=INF)            {                //printf("i:%d j:%d\n",i,j);                counter++;            }        }    }    cout<<counter<<endl;    return 0;}
0 0
原创粉丝点击