百练1603 floyd算法基础

#include
#include
using namespace std;
#define INF 0x3f3f3f
#define n 20
const int N=25;
int dist[N][N];

void init()
{
    for(int i=0;i<=n;i++)
        for(int j=0;j<=n;j++)
    {
        if(i==j) dist[i][j]=dist[j][i]=0;
        else dist[i][j]=INF;
    }
}

void floyd()
{
    for(int k=1;k<=n;k++)
        for(int i=1;i<=n;i++)
        for(int j=1;j<=n;j++)
    {
        if(dist[i][k]+dist[k][j]>m)
    {
        init();
        int t;
        for(int i=0;i>t;
            dist[1][t]=dist[t][1]=1;
        }
        for(int i=2;i<=19;i++)
        {
            cin>>m;
            while(m--)
            {
                cin>>t;
                dist[i][t]=dist[t][i]=1;
            }
        }
        floyd();
        cout<<"Test Set #"<<++cnt<>num;
        while(num--)
        {
            cin>>a>>b;
            cout<

 

你可能感兴趣的:(基础算法)