Pagini recente » Cod sursa (job #1843476) | Cod sursa (job #1270631) | Cod sursa (job #2663460) | Cod sursa (job #532238) | Cod sursa (job #1858344)
#include <fstream>
#include <vector>
using namespace std;
ifstream fin ("biconex.in");
ofstream fout ("biconex.out");
void YNY ();
void RF ();
unsigned int N, M;
unsigned int x, y;
vector <unsigned int> G[100001];
unsigned int matrix[10001][10001], matrix1[10001][10001], matrix0[10001][10001];
unsigned int i, j, k, cnt, cnt0, w, q;
int xx[100001];
unsigned int sol;
int main ()
{
fin >> N >> M;
for (i=1; i<=M; i++)
{
fin >> x >> y;
matrix[x][y] = 1;
matrix[y][x] = 1;
}
for (i=1; i<=N; i++)
for (j=1; j<=N; j++)
matrix0[i][j] = matrix[i][j];
for (k=1; k<=N; k++)
for (i=1; i<=N; i++)
for (j=1; j<=N; j++)
if (i!=j && matrix0[i][k]!=0 && matrix0[k][j]!=0 && (matrix0[i][j]>matrix0[i][k]+matrix0[k][j] || matrix0[i][j]==0))
matrix0[i][j] = matrix0[i][k] + matrix0[k][j];
for (i=1; i<=N; i++)
for (j=1; j<=N; j++)
if (matrix0[i][j] > 0)
cnt0++;
cnt0 /= 2;
for (i=1; i<=N; i++)
{
YNY();
for (j=1; j<=N; j++)
{
matrix1[i][j] = 0;
matrix1[j][i] = 0;
}
RF();
cnt = 0;
for (j=1; j<=N; j++)
for (k=1; k<=N; k++)
if (matrix1[j][k] > 0)
{
cnt++;
G[j].push_back(k);
}
cnt /= 2;
if (cnt != cnt0)
{
sol++;
xx[i] = i;
}
}
sol /= 2;
/// PRINT
fout << sol << '\n';
for (i=1; i<=sol; i++)
{
//fout << xx[i] << ' ';
for (j=1; j<G[i].size(); j++)
fout << G[i][j] << ' ';
fout << '\n';
}
return 0;
}
void YNY ()
{
int i, j;
for (i=1; i<=N; i++)
for (j=1; j<=N; j++)
matrix1[i][j] = matrix[i][j];
}
void RF ()
{
int i, j, k;
for (k=1; k<=N; k++)
for (i=1; i<=N; i++)
for (j=1; j<=N; j++)
if (i!=j && matrix1[i][k]!=0 && matrix1[k][j]!=0 && (matrix1[i][j]>matrix1[i][k]+matrix1[k][j] || matrix1[i][j]==0))
matrix1[i][j] = matrix1[i][k] + matrix1[k][j];
}