提交了N次啊,最后发现是没有处理最后无解输出-1的情况(只有少于K条路径)。
逐一搜索第1短、第2短、第3短。。。的路径,count统计一个点入队的次数。
count[i]>k cut!  count[T]=K ans=f[T].
两种无解的情况:1.到不了。2。只有少于k条路(好像都是一种情况。。。)  

 代码(非提交版)
代码(非提交版)
 #include<queue>
#include<queue>
 #include<cstdio>
#include<cstdio>
 #include<cstring>
#include<cstring>
 #include<fstream>
#include<fstream>
 #include<iostream>
#include<iostream>
 #include<algorithm>
#include<algorithm> 
 using namespace std;
using namespace std;
 //
//
 #define MM(a,i) memset(a,i,sizeof(a))
#define MM(a,i) memset(a,i,sizeof(a))
 #define FOR(i,l,r) for (int i=(l);i<=(r);i++)
#define FOR(i,l,r) for (int i=(l);i<=(r);i++)
 #define DFOR(i,r,l) for (int i=(r);i>=(l);i--)
#define DFOR(i,r,l) for (int i=(r);i>=(l);i--)
 #define NFOR(i,l,r) for (i=(l);i<=(r);i++)
#define NFOR(i,l,r) for (i=(l);i<=(r);i++)
 #define NDFOR(i,r,l) for (i=(r);i>=(l);i--)
#define NDFOR(i,r,l) for (i=(r);i>=(l);i--)
 #define PFOR(p,a,next) for(int p=a;p;p=next[p])
#define PFOR(p,a,next) for(int p=a;p;p=next[p])
 #define NPFOR(p,a,next) for(p=a;p;p=next[p])
#define NPFOR(p,a,next) for(p=a;p;p=next[p])
 //
//
 typedef long long Int64;
    typedef long long Int64;
 const int INF=~0U>>2;
    const int INF=~0U>>2;
 const int maxn=1005;
    const int maxn=1005;
 const int maxm=200005;
    const int maxm=200005;
 //
//
 int head[maxn],next[maxm],to[maxm],w[maxm];
    int head[maxn],next[maxm],to[maxm],w[maxm];
 int a[maxm],b[maxm];
    int a[maxm],b[maxm];
 int h[maxn];
    int h[maxn];
 int Q[maxm],Head,Tail;
    int Q[maxm],Head,Tail;
 int inQ[maxn];
    int inQ[maxn];
 //
//

 class node
    class node {
{
 public:
        public:
 int v,f;
        int v,f;

 bool operator < (const node &x)const
        bool operator < (const node &x)const {
{
 return f > x.f;
            return f > x.f;
 }
            }
 };
        };
 priority_queue<node>q;
    priority_queue<node>q;
 //
//
 ifstream fin("poj2449.in");
    ifstream fin("poj2449.in");
 ofstream fout("poj2449.out");
    ofstream fout("poj2449.out");
 //
//
 int S,T,K;
    int S,T,K;
 int n,m;
    int n,m;

 int main()
    int main() {
{
 int count[maxn];
        int count[maxn];
 fin>>n>>m;
        fin>>n>>m;
 MM(head,0),MM(next,0),MM(to,0),MM(w,0),MM(inQ,false);
        MM(head,0),MM(next,0),MM(to,0),MM(w,0),MM(inQ,false);
 FOR(i,1,m)
        FOR(i,1,m)
 fin>>a[i]>>b[i]>>w[i],
            fin>>a[i]>>b[i]>>w[i],
 next[i]=head[b[i]],head[b[i]]=i,to[i]=a[i];
            next[i]=head[b[i]],head[b[i]]=i,to[i]=a[i];
 fin>>S>>T>>K;
        fin>>S>>T>>K;
 //make H
        //make H
 FOR(i,1,n)h[i]=INF;
        FOR(i,1,n)h[i]=INF;
 Head=Tail=1;Q[1]=T;h[T]=0;
        Head=Tail=1;Q[1]=T;h[T]=0;

 for(;Head<=Tail;)
        for(;Head<=Tail;) {
{
 int &qq=Q[Head];
            int &qq=Q[Head];
 PFOR(p,head[qq],next)
            PFOR(p,head[qq],next)

 if(h[qq]+w[p]<h[to[p]])
                if(h[qq]+w[p]<h[to[p]]) {
{
 h[to[p]]=h[qq]+w[p];
                    h[to[p]]=h[qq]+w[p];
 if(!inQ[to[p]])//这里不是标准的SPFA,对于A*的H,可以近似的处理??
                    if(!inQ[to[p]])//这里不是标准的SPFA,对于A*的H,可以近似的处理??
 //完了,我又不确定了。。。 标准SPFA 954MS AC 这个版本 235MS AC
                    //完了,我又不确定了。。。 标准SPFA 954MS AC 这个版本 235MS AC 
 Tail++,Q[Tail]=to[p],inQ[to[p]]=true;
                        Tail++,Q[Tail]=to[p],inQ[to[p]]=true;
 }
                    }
 Head++;
            Head++; 
 inQ[qq]=false;
            inQ[qq]=false;     
 }
            }

 if(h[S]==INF)
        if(h[S]==INF) {fout<<"-1";return 0;}
{fout<<"-1";return 0;}
 //find K
        //find K
 MM(head,0),MM(next,0),MM(to,0),MM(count,0);
        MM(head,0),MM(next,0),MM(to,0),MM(count,0);
 FOR(i,1,m)
        FOR(i,1,m)
 next[i]=head[a[i]],head[a[i]]=i,to[i]=b[i];
            next[i]=head[a[i]],head[a[i]]=i,to[i]=b[i];
 if(S==T)K++;
        if(S==T)K++;
 node tmp;tmp.v=S,tmp.f=h[S],q.push(tmp);
        node tmp;tmp.v=S,tmp.f=h[S],q.push(tmp);

 for(;!q.empty();)
        for(;!q.empty();) {
{
 int x=q.top().v,y=q.top().f;q.pop();
            int x=q.top().v,y=q.top().f;q.pop();
 count[x]++;
            count[x]++;

 if(count[T]==K)
            if(count[T]==K) {fout<<y;return 0;}
{fout<<y;return 0;}
 if(count[x]>K)continue;
            if(count[x]>K)continue;

 PFOR(p,head[x],next)
            PFOR(p,head[x],next) {
{
 tmp.v=to[p];
                tmp.v=to[p];
 tmp.f=y-h[x]+w[p]+h[tmp.v];
                tmp.f=y-h[x]+w[p]+h[tmp.v];
 q.push(tmp);
                q.push(tmp);
 }
                }
 }
            }
 //
        //
 fin.close();
        fin.close();
 fout.close();
        fout.close();
 return 0;
        return 0; 
 }
        }
