結果
問題 |
No.1320 Two Type Min Cost Cycle
|
ユーザー |
![]() |
提出日時 | 2025-09-30 22:03:46 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,462 bytes |
コンパイル時間 | 1,256 ms |
コンパイル使用メモリ | 168,972 KB |
実行使用メモリ | 13,968 KB |
最終ジャッジ日時 | 2025-09-30 22:03:50 |
合計ジャッジ時間 | 3,890 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 WA * 1 |
other | AC * 8 WA * 49 |
ソースコード
#include<bits/stdc++.h> #define int long long using namespace std; const int N=2e5+10; const int INF=1e9+10; int T,n,m,cnt,ans=INF; int head[N],nxt[N],to[N],val[N],dis[N],vis[N],fa[N]; struct node{ int u,v,w; }a[N]; inline void add(int u,int v,int w){nxt[++cnt]=head[u];head[u]=cnt;to[cnt]=v;val[cnt]=w;return;} inline void dij(int s){ dis[s]=0; priority_queue<pair<int,int> > q; q.push({-dis[s],s}); while(q.size()!=0){ pair<int,int> h=q.top();q.pop(); int x=h.second; if(vis[x]) continue; vis[x]=1; for(int i=head[x];i;i=nxt[i]){ int y=to[i],w=val[i]; if(dis[y]>dis[x]+w){ dis[y]=dis[x]+w;fa[y]=x; q.push({-dis[y],y}); } } } } signed main(){ cin>>T>>n>>m; if(T==0){ for(int i=1,u,v,w;i<=m;i++){ cin>>u>>v>>w; a[i].u=u;a[i].v=v;a[i].w=w; add(u,v,w); add(v,u,w); } for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++) dis[j]=INF,vis[j]=0,fa[j]=0; dij(i); for(int j=1;j<=m;j++){ int u=a[j].u,v=a[j].v,w=a[j].w; if(v==i||u==i) continue; if(fa[u]==v||fa[v]==u) continue; ans=min(ans,dis[u]+dis[v]+w); } } cout<<ans<<"\n"; } if(T==1){ for(int i=1,u,v,w;i<=m;i++){ cin>>u>>v>>w; a[i].u=u;a[i].v=v;a[i].w=w; add(u,v,w); } for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++) dis[j]=INF,vis[j]=0,fa[j]=0; dij(i); for(int j=1;j<=m;j++){ int u=a[j].u,v=a[j].v,w=a[j].w; if(v!=i) continue; ans=min(ans,dis[u]+w); } } cout<<ans<<"\n"; } return 0; }//11313