各位大佬帮忙看看暴力剪枝哪错了
#include <iostream>
#include <vector>
#include <set>
using namespace std;
const int M=200009;
const long long N=1000000000000000009;
int n,m,k;
vector<int> vec[M];
int ls[M];
int yingshe[M];
set<int> gp[M];
long long circle;
long long lef;
int w[M];
int main()
{
cin>>n>>m>>k;
circle=k/m;
lef=k%m;
for(int i=1;i<=n;i++)
{
ls[i]=i;
gp[i].insert(i);
}
for(int i=1;i<=m;i++)
{
int tmp1,tmp2;
cin>>tmp1>>tmp2;
vec[i].push_back(tmp1);
vec[i].push_back(tmp2);
}
set<int>::iterator it;
if(k>=m)
{
for(int i=1;i<=m;i++)
{
gp[ls[vec[i][0]]].insert(vec[i][1]);
gp[ls[vec[i][1]]].insert(vec[i][0]);
swap(ls[vec[i][0]],ls[vec[i][1]]);
}
for(int i=1;i<=n;i++)
yingshe[i]=ls[i];
if(circle>=2)
{
for(int i=1;i<=circle-1;i++)
{
w[i]=1;
for(int j=1;j<=m;j++)
{
int tmp=gp[j].size();
gp[j].insert(gp[yingshe[j]].begin(),gp[yingshe[j]].end());
int tmp2=gp[j].size();
if(tmp!=tmp2)
for(int k=j;k<=circle+j;k++)
w[k]=0;
}
if(w[i]=1)
{
break;
}
}
}
}
for(int i=1;i<=lef;i++)
{
gp[ls[vec[i][0]]].insert(vec[i][1]);
gp[ls[vec[i][1]]].insert(vec[i][0]);
swap(ls[vec[i][0]],ls[vec[i][1]]);
}
for(int i=1;i<=n;i++)
{
cout<<gp[i].size()<<endl;
}
}