题意:
给了一个无向图(至多700个点,两点间无重边),问其中边数最少的环是所少条边
题解:
这类问题可以用Floyd做..但是会超时...
用BFS的方法,思路就是形成了环,则必然是搜索树上有了前向或者平行边..枚举每个点位根..做BFS..按照遍历的顺序给每个点标号..当找到一个已经标号的边..则知道形成了环..距离为dis[u]+dis[v]-1...但是这种方法只能求这种边权值都为1的最小环...加些条件就很容易出错了..而Floyd的方法适用范围更广...
Program(Floyd,TLE):
#include<iostream>
#include<stdio.h>
#include<string.h>
#include<queue>
#include<algorithm>
#include<cmath>
#define oo 1000000007
#define MAXN 505
using namespace std;
int Dist[MAXN][MAXN],Graph[MAXN][MAXN];
int MC(int nVertex)
{
int mincircle=oo,i,j,k,temp;
for (i=0;i<nVertex;i++)
for (j=0;j<nVertex;j++)
Dist[i][j]=Graph[i][j];
for(k=0;k<nVertex;++k)
{
//新增部分:
for(